Windows(客户端)ssh免密码登录Linux(远程)

需求:需要管理大量服务器,避免每次登录服务器都重复输入密码,特进行基于“公钥-私钥对”方法的远程登录设置。以下是我自己的设置方法。

基本原理:在本地生成一对公钥和私钥,将公钥字符串追加复制到服务器的“~/.ssh/authorized_keys”文件中(其中:.ssh文件夹权限设置为700, authorized_keys文件权限设置为600,这个文件中可以放多个公钥字符串,一个公钥一行)。私钥(默认文件名为id_rsa)放在本地~/.ssh/目录中,就可以实现默认私钥免密登录远程服务器。通过进一步配置~/.ssh/config文件可以实现登录不同服务器用不同私钥文件的需求。

详细步骤:

     准备:在Windows客户端安装Linux模拟终端cmder。这个终端虽然有一些bug但是真的很方便,可以用很多Linux的基本命令。

     1. 在本地(Windows客户端)生成“公钥-私钥”文件对

         在cmder终端运行以下命令:

         ssh-****** #连续enter,可以在当前系统用户文件夹的.ssh文件夹下生成公私钥文件(默认为id_rsa、id_rsa.pub,其中id_rsa为私钥文件、id_rsa.pub为公钥文件)        

     Windows(客户端)ssh免密码登录Linux(远程)

         修改id_rsa.pub文件,去掉最后的字符串"[email protected]"

     2. 将公钥拷贝到服务器端

         scp id_rsa.pub [email protected]:/root/.ssh/ #拷贝公钥文件到服务器~/.ssh下

         touch authorized_keys #创建公钥keys文件

         cat id_rsa.pub >> authorized_keys #将公钥字符串追加拷贝到改文件

         chmod 600 authorized_keys   #修改文件权限

         cd ..

         chmod 700 .ssh #修改文件夹权限

     3. 在服务器端做必要的ssh配置

         vim /etc/ssh/sshd_config #对sshd_config文件做如下修改

         #############################################

                   RSAAuthentication yes

                   PubkeyAuthentication yes

                   PermitRootLogin yes

        ##############################################

         修改完sshd_config文件后,重启ssh服务:service ssh restart

     4. 利用默认单个私钥实现免密登录

         这样就可以实现免密登录了:ssh [email protected]

     5. 通过设置~/.ssh/config文件实现不同服务器用不同私钥文件的需求

         可以配置config文件,简化登录操作

         vim config   #编辑如下

         ##############################

         Host nickname #指定登录别名

               HostName amazon.com    #指定IP或者HOST

               Port 22 #指定端口,默认22

               User username #指定用户名

               IdentityFile ~/.ssh/id_rsa    #指定私钥文件

         ##############################

         保存之后,可以简化登录:ssh nickname