如果你管理一台或者多台Linux服务器,那么你就会知道每次SSH登录时或者使用scp复制文件时都要输入密码是一个多么繁琐的过程。这篇教程将主要介绍使用SSH Key来实现SSH无密码登录,而且使用scp复制文件时也不需要再输入密码。除了方便SSH登录,scp复制文件外,SSH无密码登录也为Linux服务器增加了又一道安全防线。
本文内容比较小白,大神请飘过!如果你是比我还小白的小白并且不想配置这么复杂的东西,可以付费找我QQ1989473781帮你配置,当然如果你密码自认为比较复杂,但是比较难记,你也许会对下面的文章比较感兴趣:使用 KeePass 密码管理工具实现 PUTTY 一步登录。
一、公钥私钥的生成方法
要实现SSH无密码登陆首先我们需要有公钥和私钥,这里公钥和私钥的生成可以在本地完成也可以在服务器上直接完成,下面先说如何在本地生成,通常我们本地使用的计算机多是Windows系统,少数的Linux系统用户可以一会参考在服务器生成的步骤。
Windows系统上生成公钥和私钥需要使用第三方工具比如:Git、SecureCRT、xshell、PuttyGen等工具,因为我本地是Windows10支持Ubuntu,我最初是在自己的Windows下的Ubuntu生成的,这里为了让大家看到不同工具的使用,我下载了Git和PuttyGen两个工具分别给大家演示如何操作:
Ⅰ、Git生成私钥公钥
首先是Git这几乎是所有程序员必备的工具,虽然我不是程序员,关于Git的安装不在本文指示范围内,在安装有Git的电脑桌面右键选择“Git Bash Here”然后窗口输入:ssh-keygen -t rsa
命令,命令界面会提示你生成存放私钥和公钥的位置回车默认即可,然后会让你输入私钥的密码,可以选择不设置,但是建议设置最好,这个密码不是你的一些账号的登陆密码,简单好记就行,回车执行后效果如下图:
然后到刚才默认的目录下查看已经生成的私钥和公钥:
上面图片里的两个文件:id_rsa 是你的私钥 id_rsa.pub 是你的公钥
【因为生成目录在.ssh目录下所以你需要开启Windows的隐藏文件才能查看】
【一定保存好自己的私钥文件,最好多复制几份存储在不同地方,另外该私钥可以在以后的系统共用,所以非特别情况不需要拥有很多私钥,这一个就够了,因为太多了容易搞混,密码安全的第一规则应该是你自己能清晰的系统的记住】
Ⅱ、PuttyGen生成私钥公钥
打开PuttyGen.exe程序,该程序时绿色版单文件不需要安装即下即用,点击有下脚的Generate生成,见下图:
在生成过程中用鼠标在进度条下面的空白处乱晃几下,产生随机性,注:点的越快进度越快:
生成好以后是这个样子和命令行一样可以设置密钥的密码:
点击 Save public key 即保存为公钥,同理 Save private key 保存为私钥,这里注意公钥私钥都要保存,公钥保存为 id-rsa.pub ,私钥保存为 id-rsa 没有后缀名。
Ⅲ、服务器上直接生成私钥公钥
这是比较方便的做法,不过建议还是本地生成后上传服务器比较保险,这样本地私钥就可以重复利用了,服务器上直接生成下载下来保存也可以,服务器端生成的方法和上面Git生成的步骤一模一样,这里就不截图演示了。
二、公钥上传服务器配置
将公钥文件上传到服务器可以使用命令上传也可以通过WinSCP上传,命令上传比较方便,推荐使用,我也是这次才学到的,以前都是通过WinSCP上传。
Ⅰ、命令方式上传公钥文件到服务器
ssh-copy-id -p 端口号 [email protected]
注意上面命令里的端口号换成你的服务器的SSH端口号,@后面的ip地址换成你自己的服务器IP,执行命令输入服务器密码即可,该命令默认会将你本地通过Git生成的公钥【上面Git生成的公约私钥默认位置没有改变的情况下才能执行成功】拷贝到你的服务器 ~/.ssh/authorized_keys
文件里。如果你需要上传指定的公钥文件请按照下面参数修改:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
-i参数表示指定文件,后面跟上你的公钥文件路径
Ⅱ、WinSCP界面上传公钥到服务器
WinSCP配置好以后连接到你的服务器,把公钥拖放到 /root 目录下,然后通过使用Putty或者WinSCP登陆服务器在服务器上执行以下命令:
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
注意:如果是命令方式上传公钥文件到服务器的不需要执行cat命令,因为ssh-copy-id默认已经将公钥写入到 /root/.ssh/authorized_keys
文件里了,这也是我为什么给大家推荐命令上传的原因。
注:为了保险起见最好把服务器公钥认证文件设置为只读 chmod 400 ~/.ssh/authorized_keys
三、配置服务器 SSH 的登陆参数
通过Putty或者WinSCP登陆服务器,然后修改SSH的配置文件/etc/ssh/sshd_config,命令如下:
vi /etc/ssh/sshd_config
打开配置文件,找到下面四行:
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
将前面的#注释去掉,最后一行修改成 PasswordAuthentication no
意思是不需要密码登陆,保存。
然后重启 SSH 服务,运行命令:
service sshd restart
到这里服务器私钥无密码登陆已经配置好了,接下来就是本地配置Putty等连接工具的属性了。
因为我这里主要使用Putty和WinSCP所以就拿Putty来测试了,依然要是用到PuttyGen来生成适合Putty规则的私钥,方法如下:
点击File,Load private key,导入我们在第一步里生成的私钥文件id-rsa,如果私钥是通过PuttyGen生成的就不需要这一步了,然后点击Save private key按钮,生成一个后缀为ppk的文件。
然后配置你的Putty Connection - SSH - Auth 在Private key file for authentication选择你上一步生成的Putty的私钥PPK文件,如下图所示:
如果你上面进行的顺利的话,这里Putty已经不需要登陆的服务器密码了,但是如果你配置了私钥的密码,登录时私钥密码还是要输入的,但是不用记复杂的服务器密码了。
至此,你就只能用私钥登录到 VPS 了,这对服务器的安全性大大增强。
本文所需要到的软件下载:Putty和PuttyGen下载 WinSCP绿色开源版下载
你也许对下面文章感兴趣:
SSR开启Google的BBR内核脚本加速TCP(附BBR一键安装脚本)
SSR-Bash-Python安装脚本+教程/一键安装SSR+用户控制面板
如果有什么问题可以给我留言,如果本文帮助到了你,希望你能给点打赏,支持小站运营下去。
特别优惠:免费赠送 $50 Vultr主机-限时优惠!Adsense英文站必备海外服务器!点击了解更多
100%的隐私,我和你一样讨厌垃圾邮件!
暂无人评论