ssh远程免密访问配置

1 篇文章 0 订阅
1 篇文章 0 订阅

需求:

(1)机器A需要ssh远程登录机器S和T。
(2)同时,机器B需要ssh远程登录机器S。
(3)同时,机器T需要ssh远程登录机器A。

  • 需求拆解:
    A->S; A<->T; B->S
    覆盖三种情况:一台本地机器与多台远程机器ssh访问,一台远程机器被多台本地机器ssh访问,本地机器和远程机器互相ssh访问。

概念:

  • .ssh/id_rsa 默认的私钥文件, 本地机生成,不对外
  • .ssh/id_rsa.pub 默认的公钥文件,本地机生成,对外
  • .ssh/config 本地机器的配置,内容是远程服务器Host,Port等信息
  • .ssh/authorized_keys 远程机器的配置,记录了可以访问自己的机器的公钥
  • .ssh/known_hosts 记录访问过的远程机公钥,下次访问相同机器,会核对公钥,防DNS攻击

注意:一台物理机既可能作为本地机去访问别人,也可以同时作为远程机被别人访问,比如需求中A机器和T机器


实现:

A->S

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,都不需要输入密码

A<->T

双向ssh访问跟单项配置类似,只是需要在互相生成自己的密钥,然后将公钥添加到对方的.ssh/authorized_keys文件。
A->T的时候,如果已经有密钥文件(A-S时生成的id_rsa和id_rsa.pub),可以直接用已有的,当然如果希望用不同的密钥文件,那就重新ssh-keygen,但是要注意指定-f,防止id_rsa被覆盖,影响了A-S的访问。

B->S

类似A-S的流程,最后B的公钥追加到S到.ssh/authorized_keys文件即可。


注意

  • .shh目录权限必须是700,.ssh/config文件必须是600,可以避免被远程登陆的用户篡改。

参考:

https://wiki.archlinux.org/index.php/SSH_keys

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值