基本过程是,客户端产生一对密钥,私钥在手,公钥需发送到服务器。
#本地先产生公钥密钥
ssh-keygen#发送本地公钥至服务器
ssh-copy-id -i /home/jlee/.ssh/id_rsa.pub Gukar@192.168.0.28#无密钥登陆服务器
ssh Gukar@192.168.0.28
SSH-AGENT的用法
1. 免输入密钥方式登陆的密码
设置ssh-keygen时,若选择输密码,ssh密钥登陆还是会提示输入私钥密码(非用户密码),ssh-agent能避免这种反复输入私钥的烦恼,
操作如下:
ssh-agent
ssh-add 私钥 (这里会提示一次输密码,之后将密码保存在缓存中,之后便不能再input了)
2. 多个服务器之间密钥穿梭
实现从本机->S1->S2的登陆,若按一般步骤,需要将本机私钥也在S1上放一份,但在任何服务器上放私钥都是不安全行为,但用ssh-agent
可解决这一问题:
#开启ssh-agent
eval ssh-agent
#添加私钥
ssh-add ~/.ssh/id_rsa
#修改本机和涉及到的服务器ssh配置,允许密钥在服务器间转发
vim /etc/ssh/ssh_config
#ForwardAgent后面参数修改为yes
ForwardAgent yes
#更改ssh配置需重启sshd
service sshd restart
3.解决非ssh-copy-id -i方式更新公钥,可能出现的密钥验证错误
原则上,两台电脑之间密钥ssh无需ssh-agent,但若非ssh-copy-id -i参数更新公钥,有可能需要ssh-agent,原因是服务器读公钥
有两种方式,一种是直接读authorized_keys文件里的内容,另一种是读ssh-agent缓存里的。解决方式如下:
ssh-agent -s
ssh-add