Yiner

Sep 28, 2021

配置SSH免密访问

 
SSH的免密钥登录原理其实就是SSH认证时将自己的公钥提前存储在需要被访问主机(可以是本主机,也可以是远程主机)的认证文件中,默认该文件路径为:~/.ssh/authorized_keys。该文件中存储了哪台主机的公钥,那么那台主机就可以通过SSH免密钥登录本主机。
💡
过程:首先生成本机公钥和私钥,然后将公钥插入到需要免密码访问的主机的~/.ssh/authorized_keys文件中。
💡
核心命令:ssh-copy-id
 

生成密钥对

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  • 其中-t后面跟加密方法,推荐rsa,
如果你想使用dsa算法,或者使用dsa算法后发现无法免密登录,可以查看这里(貌似dsa算法以后不再支持免密码登录):http://superuser.com/questions/1016989/ssh-dsa-keys-no-longer-work-for-password-less-authentication
  • -P后面跟的是密码,这里表示密码为空,-f后面为么钥存储路径。
  • 此时.ssh目录中文件如下:
    • .ssh ├── id_rsa └── id_rsa.pub
      其中.pub结尾的即为公钥,另一个是私钥。
 

本机登录

将密码插入到authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改权限

chmod 0600 ~/.ssh/authorized_keys
如果可以正常免密访问,可以不进行权限修改。

登录

ssh localhost
第一次登录会询问yes or no,直接回车,或者输入yes后回车即可
 

远程登录

配置远程主机SSH免密登录

  • 假设远程主机的ip已经在本地的hosts文件中添加了映射,并且映射主机名为node1
  • 现在就可以直接ssh user@node1来访问node1主机了,第一次会提示yes or no,直接回车即可
  • 使用命令:
    • ssh-copy-id -i user@node1 # 直接用ip ssh-copy-id user@xx.xx.xx.xx # -p 指定端口 ssh-copy-id -p port user@xx.xx.xx.xx
      就是将本机的公钥插入到远程主机node1的用户user的authorized_keys文件中
  • 所以也可以手动通过scp将自己的公钥复制到远程主机,然后再将其手动复制到远程主机authorized_keys文件的结尾
  • 如果需要反向访问,就需要从远程主机上进行相同的操作
 

Copyright © 2024 Yiner

logo