ming's blog
ssh免密登录

ssh免密登录

  1. 在系统上安装ssh后,生成秘钥

    > ssh-keygen -t rsa -C "info"
    
    -t 指定加密算法
    -C 在密文尾部加标记信息 
  1. 将公钥发布到待免密登录的机器上

    > cd ~/.ssh/
    
    # 有两种方式发送公钥到远程机器上 
    > ssh-copy-id -i [本地公钥文件id_rsa.pub路径] 用户名@IP
    # 这样一部就可以将公钥写到远程机器的 /.ssh/authorized_keys 中,缺点是默认22端口,不可更改
    > scp ~/.ssh/id_rsa.pub 用户名@IP:.ssh/id_rsa_remote.pub
    > cat id_rsa_remote.pub >> authorized_keys
    # 这种方式既可以设置端口,也可以用于对方机器非root用户的情况(需要密码)
    # 在我们想使用脚本自动完成秘钥发布工作时,可以使用sshpass解决人机交互问题
    > sshpass -p '密码' ssh-copy-id "-o StrictHostKeyChecking=no" 用户名@IP
    # sshpass会为你的首次连接自动填充密码
    # 同时使用"-o StrictHostKeyChecking=no"解决输入密码后的网络校验工作,避免首次登录输入yes
    # 这样就解决了两步人机交互问题,实现自动化

    注意:

    1. B机器上有A机器的公钥,则A可以免密登录到B,不要记反了。

    2. 可以使用 passwd 用户名 更改用户的密码

    3. 需要在sshd的配置文件 /etc/ssh/sshd_config 中增加 PermitRootLogin yesPubkeyAuthentication yes,用于打开root用户远程访问和秘钥验证登录

  1. ssh连接到到机器上

    配置完成后,使用 `ssh 用户名@IP` 连接远程机器,首次连接会询问是否继续,输入yes,会在本地生成known_hosts文件用于记录已访问机器