(1)机器A需要ssh远程登录机器S和T。
(2)同时,机器B需要ssh远程登录机器S。
(3)同时,机器T需要ssh远程登录机器A。
注意:一台物理机既可能作为本地机去访问别人,也可以同时作为远程机被别人访问,比如需求中A机器和T机器
1,A机器上生成密钥对,把公钥拷贝到远程的S机器上:
在机器A上:
# ssh-keygen -t [rsa|dsa] [-C comment] [-f keyfile]
# 执行下面命令,一路enter,会生成默认名为id_rsa和id_rsa.pub的两个文件。-C指定注释,习惯上可以注释为个人邮箱,默认是本地机器名;-f指定文件名如another_rsa,则生成another_rsa和another_rsa.pub,前者是私钥自己留着,后者是公钥,内容拷贝到S
ssh-keygen -t rsa # 一路enter到底
ssh-keygen -t rsa -C "xxx@qq.com" # 或者,增加注释,公钥内容里会有这个信息
ssh-keygen -t rsa -C "xxx@qq.com" -f "another_rsa" # 或者,指定密钥文件的名字,否则每次都会写覆盖id_rsa和id_rsa.pub,一般多个ssh服务公用一个密钥就可以了
在机器S上:
vi ~/.ssh/authorized_keys # 把id_rsa.pub内容追加到authorized_keys后面(如果该文件,则创建)
chmod 600 ~/.ssh/authorized_keys # 确保authorized_keys权限不大于644
如果是远程登陆github,可以将公钥拷贝到github的key配置上(setting-SSH-new SSH key)。
2,A机器配置config文件:
vi ~/.ssh/config
chmod 600 ~/.ssh/config #注意修改权限
config文件内容:
Host S # 服务器别名,自己定义
IdentityFile ~/.ssh/id_rsa # 本地私钥文件
HostName xxx.xxx.xxx.xxx # 远程机器IP或域名,如github.com
Port xxx # 如果HostName是IP,则还需要指明端口号
User name # 远程机器用户名
3,测试:
ssh S # 等同于ssh name@xxx.xxx.xxx.xxx -p xxx,都不需要输入密码
双向ssh访问跟单项配置类似,只是需要在互相生成自己的密钥,然后将公钥添加到对方的.ssh/authorized_keys文件。
A->T的时候,如果已经有密钥文件(A-S时生成的id_rsa和id_rsa.pub),可以直接用已有的,当然如果希望用不同的密钥文件,那就重新ssh-keygen,但是要注意指定-f,防止id_rsa被覆盖,影响了A-S的访问。
类似A-S的流程,最后B的公钥追加到S到.ssh/authorized_keys文件即可。