我尝试生成一个新的 SSH 密钥对
jacob@mystuff:~$ ssh-keygen -t rsa -C "GitLab" -b 4096
jacob@mystuff:~$ ls -la
total 32
drwxr-xr-x 3 jacob jacob 4096 Feb 18 00:09 .
drwxr-xr-x 4 root root 4096 Feb 18 00:05 ..
-rw------- 1 jacob jacob 3326 Feb 18 00:09 ??
-rw-r--r-- 1 jacob jacob 220 Feb 18 00:05 .bash_logout
-rw-r--r-- 1 jacob jacob 3771 Feb 18 00:05 .bashrc
-rw-r--r-- 1 jacob jacob 655 Feb 18 00:05 .profile
-rw-r--r-- 1 jacob jacob 732 Feb 18 00:09 ??.pub
drwxrwxr-x 2 jacob jacob 4096 Feb 18 00:08 .ssh
jacob@mystuff:~$ cat ~/.ssh/id_rsa.pub
cat: /home/jacob/.ssh/id_rsa.pub: No such file or directory
答案1
ls
-q
如果设置了开关或等效的长开关,则只会打印出问号,而文件名中的该位置实际上没有问号。--hide-control-chars
但事实并非如此。这意味着您有一个名为的文件??
。
steeldriver 的假设可能是正确的:您在运行??
时声明了密钥的名称。ssh-keygen
这很明显,因为在成功执行ssh-keygen
之前就运行了ls
,它会创建一个包含私钥(可能已加密)的文件(其名称您可以选择)和一个包含公钥的文件,公钥以包含私钥的文件的名称开头,但以.pub
结尾。有一个名为的文件??
和一个名为的文件??.pub
,所以这完全说得通。
与要求您说明的所有其他具有默认值的事物一样,您只需按下即可Enter接受密钥文件位置的默认值。
要将文件名和位置更改为默认键之一,请执行以下命令:
mkdir -p ~/.ssh
mv ~/?? ~/.ssh/id_rsa
mv ~/??.pub ~/.ssh/id_rsa.pub
.ssh
如果文件夹不存在,第一个会在您的主目录中创建该文件夹;第二个会将您的私钥移动到其中;第三个会将您的公钥移动到其中。