Linux VPS 实现SSH私钥授权无密码登陆的配置记录

罗格罗格 💠技术文档 ⏰1年前 (2018-06-23) 👁️2505 Views 💬0 comment

Linux VPS 实现SSH私钥授权无密码登陆的配置记录

如果你管理一台或者多台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命令,命令界面会提示你生成存放私钥和公钥的位置回车默认即可,然后会让你输入私钥的密码,可以选择不设置,但是建议设置最好,这个密码不是你的一些账号的登陆密码,简单好记就行,回车执行后效果如下图:

Git生成私钥公钥

然后到刚才默认的目录下查看已经生成的私钥和公钥:

Git生成私钥公钥

上面图片里的两个文件:id_rsa 是你的私钥 id_rsa.pub 是你的公钥
【因为生成目录在.ssh目录下所以你需要开启Windows的隐藏文件才能查看】
【一定保存好自己的私钥文件,最好多复制几份存储在不同地方,另外该私钥可以在以后的系统共用,所以非特别情况不需要拥有很多私钥,这一个就够了,因为太多了容易搞混,密码安全的第一规则应该是你自己能清晰的系统的记住】

Ⅱ、PuttyGen生成私钥公钥

打开PuttyGen.exe程序,该程序时绿色版单文件不需要安装即下即用,点击有下脚的Generate生成,见下图:

PuttyGen生成私钥公钥

在生成过程中用鼠标在进度条下面的空白处乱晃几下,产生随机性,注:点的越快进度越快:

PuttyGen生成私钥公钥

生成好以后是这个样子和命令行一样可以设置密钥的密码:

PuttyGen生成私钥公钥

点击 Save public key 即保存为公钥,同理 Save private key 保存为私钥,这里注意公钥私钥都要保存,公钥保存为 id-rsa.pub ,私钥保存为 id-rsa 没有后缀名。

Ⅲ、服务器上直接生成私钥公钥

这是比较方便的做法,不过建议还是本地生成后上传服务器比较保险,这样本地私钥就可以重复利用了,服务器上直接生成下载下来保存也可以,服务器端生成的方法和上面Git生成的步骤一模一样,这里就不截图演示了。

二、公钥上传服务器配置

将公钥文件上传到服务器可以使用命令上传也可以通过WinSCP上传,命令上传比较方便,推荐使用,我也是这次才学到的,以前都是通过WinSCP上传。

Ⅰ、命令方式上传公钥文件到服务器

ssh-copy-id -p 端口号 root@192.168.0.0

命令方式上传公钥文件到服务器

注意上面命令里的端口号换成你的服务器的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规则的私钥,方法如下:

keygen_1.png

点击File,Load private key,导入我们在第一步里生成的私钥文件id-rsa,如果私钥是通过PuttyGen生成的就不需要这一步了,然后点击Save private key按钮,生成一个后缀为ppk的文件。

然后配置你的Putty Connection - SSH - Auth 在Private key file for authentication选择你上一步生成的Putty的私钥PPK文件,如下图所示:

Linux VPS 实现SSH授权无密码登陆的配置记录

如果你上面进行的顺利的话,这里Putty已经不需要登陆的服务器密码了,但是如果你配置了私钥的密码,登录时私钥密码还是要输入的,但是不用记复杂的服务器密码了。

至此,你就只能用私钥登录到 VPS 了,这对服务器的安全性大大增强。

本文所需要到的软件下载:Putty和PuttyGen下载 WinSCP绿色开源版下载

你也许对下面文章感兴趣:
SSR开启Google的BBR内核脚本加速TCP(附BBR一键安装脚本)
SSR-Bash-Python安装脚本+教程/一键安装SSR+用户控制面板

如果有什么问题可以给我留言,如果本文帮助到了你,希望你能给点打赏,支持小站运营下去。

特别优惠:免费赠送 $50 Vultr主机-限时优惠!Adsense英文站必备海外服务器!点击了解更多

关注公众号:多思多金,学习更多技巧
喜欢我们吗? 订阅我的博客更新,让你不错过任何帖子。订阅后可以免费获得我正在写的2019年网络赚钱新思路电子书,了解2019年为您的网站带来流量最有效方法

100%的隐私,我和你一样讨厌垃圾邮件!

  • 本文编辑:罗格
  • 本文链接:https://www.moidea.info/archives/linux-vps-ssh-login-without-password.html
  • 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!
  • 客官,说两句吧!

    暂无人评论