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为公钥文件)
修改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