(一)问题:
假如我们现在有两台机器:ServerA和ServerB,现在想要让ServerA不用输入密码就能够进行访问。
(二)方法和原理:
我们使用ssh-keygen在ServerA上生成private和public密钥,将生成的public密钥拷贝到远程机器ServerB上后,就可以使用ssh命令无需密码登录到另外一台机器ServerB上。
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法【默认是DSR算法】,该工具做linux系统的远程管理是非常安全的。
(三)实验步骤:
1.登录ServerA
2.ssh-keygen -t rsa,将会生成公钥和私钥文件id_rsa和id_rsa.pub【如果一直回车下去,最后这两个文件应该在/home/$USER/.ssh下面】
3.将 .pub 文件复制到ServerB机器的 .ssh 目录下,并保存为authorized_keys
可以使用:
ssh-cop-id命令会将指定的公钥文件复制到远程计算机
作者:紫颖
来源:CSDN
原文:https://blog.csdn.net/zhuying_linux/article/details/7049078
版权声明:本文为博主原创文章,转载请附上博文链接!
说明
在客户机生成公钥和私钥, 然后将公钥拷贝到服务器.ssh/authorized_keys中, 客户机即可免密登录服务器了.
安装sshd
yum -y install sshd
如果下载特别慢可以参考Centos修改镜像为国内的阿里云源
依次执行下面命令
/usr/bin/ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa #生成公钥私钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #将公钥追加到 ~/.ssh/authorized_keys文件
chmod 600 ~/.ssh/authorized_keys #修改 ~/.ssh/authorized_keys权限
测试
ssh localhost
如果不用输入密码就成功了,如果还要生成密码,那就调试咯
退出ssh
exit
调试
服务器端配置文件/etc/ssh/sshd_config
vi /etc/ssh/sshd_config
命令模式输入/RSA,找到47行的这两条配置文件
修改如下两行为yes。其实大多数情况下不用修改,默认就是yes。
47 #RSAAuthentication yes
48 #PubkeyAuthentication yes
49 #AuthorizedKeysFile .ssh/authorized_keys
如果你遇到了
Permissions 0755 for '~/.ssh/authorized_keys' are too open.
你没执行 chmod 600 ~/.ssh/authorized_keys
.ssh 目录的权限必须是0700
.ssh/authorized_keys 文件权限必须是0600
命令讲解
ssh-keygen #产生公钥与私钥对.
ssh-copy-id #将本机的公钥复制到远程机器的authorized_keys文件中
例子
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node4
输入密码,copy完成
把本机的公钥复制到要免密登录的服务器中,这样本机就可以免密登录远程服务器了
ssh-copy-id -f -i ~/.ssh/id_rsa.pub root@node4
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/abc/.ssh/id_rsa.pub"
root@node4's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@node4'"
and check to make sure that only the key(s) you wanted were added.
测试
ssh root@node4
不需要输入密码咯
注意
先执行
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
~/.ssh/目录下有authorized_keys 文件后再用ssh-copy-id命令,否则有可能出问题。
关闭用户名密码登录
修改一下服务器的配置文件/etc/sshd/sshd_config
PasswordAuthentication no
修改完后要重启sshd服务。
service sshd restart
这样用户通过密码方式登录时就会提示:
Permission denied (publickey,gssapi-with-mic)
不错的文章
https://blog.csdn.net/zhuying_linux/article/details/7049078