SSH怎么生成公钥私钥免密登录什么的就不细说了,今天记录的是怎么解决设置完之后,每次还提示”Enter passphrase for key ‘/root/.ssh/id_rsa’:“ 或者其他用户名的这个坑。
ssh localhost, 是不是要你输入id_rsa的密码?
那么一步步检查,到~/.ssh目录下,检查文件和文件权限是否都正确:
.ssh 700
id_rsa 600
id_rsa.pub 644
authorized_keys 600 已经有你的public key
接下来要做的是:
axing@LD8:~/.ssh$ ssh-add id_rsa
Could not open a connection to your authentication agent.
这说明agent设置有问题,我们接着看
axing@Bastion_LD8:~/.ssh$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-w0wtXVdGAZet/agent.21338; export SSH_AUTH_SOCK;
SSH_AGENT_PID=21339; export SSH_AGENT_PID;
echo Agent pid 21339;
接着执行以下命令
axing@LD8:~/.ssh$ eval $(ssh-agent)
Agent pid 21341
#再添加私钥到agent
axing@LD8:~/.ssh$ ssh-add id_rsa
Enter passphrase for id_rsa:
Identity added: id_rsa (id_rsa)
#测试一下:
axing@LD8:~/.ssh$ ssh localhost
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-43-generic x86_64)
...
以上配置完成后仅在本次登陆有效。当tty退出或服务器重启后还需要再来一遍。为了永久生效,需要如下配置。两种办法,第二种验证在SuSE上无效,仅作为记录:
第一种方法:借助第三方工具keychain
下载地址
https://github.com/funtoo/keychain
下载后解压缩,将keychain拷贝到bin目录
cp keychain /usr/bin/
修改用户配置文件
#vim ~/.bash_profile
keychain ~/.ssh/id_rsa
. ~/.keychain/$HOSTNAME-sh
source ~/.bash_profile
尝试登陆
第二种方法:
创建文件 ~/.ssh/config
Host docker-01 #docker-01 是主机名
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
如果仍然不生效,执行如下命令试试:
ssh-add -K ~/.ssh/id_rsa
(参数K也可能是小写k,根据系统不同)