不论服务器节点,还是客户端节点,在配置ssh时都要两两互通。因此配置ssh时,对服务器节点和客户端节点的操作是一样的。
一般Linux中都默认安装了ssh,可以通过命令:which ssh 查看
下面开始配置:
1.在每个节点上,修改/etc/ssh/sshd_config文件:
RSAAuthentication yes
PubkeyAuthentication yes
很多教程在这一步要求把PasswordAuthentication 同时设成 no ,我的建议是先不改,在后面节点之间互传公钥文件的时候还要用到密码访问的功能。
改了的话在执行:scp ./id_dsa_本机器名.pub 目的机器名:/root/.ssh 这条命令时可能出现错误:Permission denied(publickey,gssapi-with-mic). lost connection.
重启ssh后,对sshd_config文件做的修改才会生效(service sshd restart)。
2.生成密钥对。在每个节点上执行:ssh-keygen -d ,一路回车。
这时可以在/root/.ssh 文件夹下查看生成的文件(我使用的是root账户配置ssh,操作时需要把root换成你用的账户名;以“.”开头的文件夹是默认隐藏的,图形界面看不到,要在命令行里面ls)
3.将本机器公钥文件加入authorized_keys文件:cat ./id_dsa.pub>>authorized_keys
4.修改authorized_keys文件权限:chmod 644 authorized_keys
5.验证单个机器无密钥是否成功:ssh 本机器名 (不应要求密码)
6.两台机器之间做ssh时,各自需要把自己/.ssh文件夹下的公钥文件id_dsa.pub发到对方/.ssh中。
首先进行复制:cp ./id_dsa.pub ./id_dsa_本机器名.pub
接下来发送给对方:scp ./id_dsa_本机器名.pub 对方机器名:/root/.ssh 此时ssh配置并没有完成,不可能无密码无密钥的向对方机器发送文件,因此前面提到的PasswordAuthentication发挥了作用,如果设置的是yes,此时按要求输入对方机器的密码,可以进行一次性的访问;设置的是no,可能连接请求将被拒绝。
7.每个节点上,将其他节点的公钥文件添加进authorized_keys文件:cat ./id_dsa_某节点名.pub>>authorized_keys
8.至此,配置完成。可通过此命令验证配置是否成功:“ ssh 某节点名 ”。使用“exit”可以退出该节点并回到自己机器。