给远程服务器设置SSH Key免密码登陆

最近新入手一台VPS,为了安全以及远程链接方便,设置成使用SSH Key免密码登陆。做为非程序员IT小白,Google了很多教程,按本身的折腾过程,汇总成下面的步骤,做为之后再搞机的指南。程序员

1.远程服务器上生成密钥对

用SSH链接远程服务器后,执行一下命令:安全

ssh-keygen

终端中会出现提示:服务器

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): #输入生成私钥文件位置dom

Created directory '/root/.ssh'.ssh

Enter passphrase (empty for no passphrase): #为私钥加密ide

Enter same passphrase again:ui

Your identification has been saved in /root/.ssh/id_rsa.加密

Your public key has been saved in /root/.ssh/id_rsa.pub. #生成公钥文件位置命令行

The key fingerprint is:rest

7c:25:bd:54:f5:fc:60:c0:86:c1:a0:32:7d:8a:80:c4 root@debian

The key's randomart image is:

+--[ RSA 2048]----+

| .o.+..o..|

| o . . o o+ o.|

.......

2.远程服务器上配制公钥

要用SSH Key登陆,需将远程服务器上的公钥名字改为authorized_keys。

cd .ssh
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys #修改公钥为只有属主有读写权限(安全考虑)
chmod 700 ~/.ssh #修改.SSH目录为只有属主有读、写、执行权限(安全考虑)

3.本地电脑上配制私钥

3.1从远程服务器上,取回私钥到本地电脑

仍然SSH链接远程服务器,执行一下命令显示私钥文件内容。

cat /root/.ssh/id_rsa

终端中会显示相似内容:

-----BEGIN RSA PRIVATE KEY-----

Proc-Type: 4,ENCRYPTED

DEK-Info: AES-128-CBC,EA47822BC49A9E56338A99D07084DA38

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

...

-----END RSA PRIVATE KEY-----

在本地电脑新建一文本文件,名字随便取,不要后缀名。将上面内容复制粘贴到新建的文件中,保存推出。这个文件即是你的私钥文件,将它放到你想放置的位置,通常放在~/.ssh中。注意,必定要备份。

3.2本地电脑上给私钥文件从新设置权限

这一步解决的问题实际上是最后才遇到的。当时作好全部配制后,用SSH Key登陆远程服务器,终端中显示下面内容:

Permissions 0644 for 'id_rsa' are too open.

It is required that your private key files are NOT accessible by
others.

This private key will be ignored.

就是说本地电脑上的私钥文件权限太大,被忽略使用。继续Google之,在本地电脑上执行如下命令,修改私钥文件的权限。

chmod 0600 id_rsa

OK,这样就能够用SSH Key顺利登陆了。

4.远程服务器上修改SSH配制

若是不打算禁止使用SSH+密码登陆远程服务器,这一步也可在第2步后进行。

4.1开启SSH+Key登陆

SSH链接远程服务器,用vi打开SSH的配制文件。

vi /etc/ssh/sshd_config

此时终端中显示sshd_config配制文件内容。方向键移动光标,找到一下两个参数。

RSAAuthentication no

PubkeyAuthentication no

按键盘上I键,进入vi的插入模式,将以上两个参数后的no改成yes(通常默认就是yes不用改)。

4.2关闭SSH密码登陆

用密码登陆远程服务器终归有风险,有可能被黑客给爆掉,因此最好禁止使用SSH+密码登陆远程服务器。

继续在vi插入模式下移动光标,找到如下参数。

“#”PasswordAuthentication yes

将#删除,参数后面的yes改成no。而后按ESC键推出vi插入模式,接着输入:进入vi命令行模式,输入wq,回车保存退出vi。

4.3重启远程服务器SSH服务

SSH配制好后,重启生效。

/etc/init.d/ssh restart

5.用SSH+Key登陆远程服务器

如今退出以前与远程服务器的链接,再用SSH+密码链接,会提示链接被拒绝。

用SSH+Key登陆:

ssh root@xxx.xxx.xxx.xxx -p aaa -i ~/.ssh/id_rsa

xxx.xxx.xxx.xxx:远程服务器IP

aaa:端口

~/.ssh/id_rsa:本地电脑上私钥文件地址(按本身的修改)

以上命令链接服务器过程当中,终端会提示输入以前生成密钥对时,设定的私钥密码。

如此,之后链接VPS就不用再输入密码了。

相关文章
相关标签/搜索