ssh 使用 rsa key 实现无密码访问
server A 要用 rsa key 验证的方式访问 server B
- 在A上创建/root/.ssh/目录
> chmod -R 700 /root/.ssh/
> cd /root/.ssh
- 在A上生成密匙对rsa的密钥
> ssh-keygen -t rsa
会提示输入一个不同于你的password的密码(防止该私钥被盗用),直接回车,让它空着。当然,也可以输入一个。一直回车, 这样,密钥对就生成完了
其中公共密钥保存在 ~/.ssh/id_rsa.pub
私有密钥保存在 ~/.ssh/id_rsa
之后把这个密钥对中的公共密钥复制到你要访问的机器上去,并保存为
~/.ssh/authorized_keys
- 在B上修改 ssh 配置
在 /etc/ssh/sshd_config 文件末尾添加
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启B上的 ssh 服务
之后在A上用ssh scp sftp 访问B时,就不用输入密码了
- 验证
ssh 192.168.162.33 date
2. ssh远程登录不了
远程登录不了无非下面几个原因:
1) 用户名密码错误
2) 端口没开或不是默认端口
3) 不允许root用户远程登录
4) 不允许以 用户名密码的方式 登录
5) IP地址 被加入 hosts.deny
6) 防火墙
3. linux下ssh或scp出现 "RSA host key for has changed"
使用ssh远程登录或使用scp时出现rsa has changed 错误,这是Linux重装或者openssh-server重装引起的,执行以下命令即可
ssh-keygen -R IP
或者你删除个人目录下.ssh目录下的known_hosts文件中的此Ip对应的项
4. 对不同的主机使用不同的公钥
当主机中有多个密钥对的情况下,可以通过设置 /etc/ssh/ssh_config中对不同的主机和用户使用不同的私钥文件。如下例:
Host *
IdentityFile ~/.ssh/%r@%h
只对远程主机10.11.70.25进行ssh连接时,使用的私钥文件为~/.ssh/id_dsa141
Host 10.11.70.25
IdentityFile ~/.ssh/id_dsa141
5. sshd等级后,启动服错
最近由于经常扫描到openssh漏洞,把sshd升级到7.2版本之后 ,重启服务的时候出现了错误提示如下:
原因:openssh 从 7.0 后开始对于version 1.x 就不支持了,相应的RSA1算法也不再支持了,编译openssh源码的时候也不会在/etc/ssh目录下面生成ssh_host_key/ssh_host_key.pub了,因为没有在/etc/ssh下生成ssh_host_key/ssh_host_key.pub文件,导致脚本服务报错,那么可以到启动服务脚本/etc/init.d/sshd文件中删除 RSA1 相当内容
解决:删除 /etc/init.d/sshd 下面内容
这样重启SSH服务就恢复正常了