给远程服务器设置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): #输入生成私钥文件位置

Created directory '/root/.ssh'.

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

Enter same passphrase again:

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:

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就不用再输入密码了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSH是一种安全的加密协议,使用它可以远程登录服务器进行操作。如果我们每次登录都需要输入密码,那么日常工作效率会受到很大影响。为了解决这个问题,我们可以使用SSH Key来完成密码登录SSH Key是一种加密的钥匙对,由公钥和私钥两部分组成。公钥存放在服务器上,私钥留存在客户端,并且需要加密保护。当客户端登录服务器时,服务器会向客户端发送一个用于验证身份的随机字符串,客户端使用私钥对该字符串进行加密,然后发送给服务器服务器收到加密后的字符串后,使用事先存放的公钥进行解密。如果解密成功,那么就说明客户端是合法的,并且可以顺利登录服务器上。 下面是配置SSH Key的步骤: 1. 在客户端上生成SSH Key。打开终端窗口,输入命令 ssh-keygen -t rsa,按照提示输入私钥密码并确认即可。生成的公钥和私钥文件存放在~/.ssh目录下。 2. 将公钥添加到服务器上。使用命令ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname,其中user为服务器上的用户名,hostname为服务器的IP地址或域名。 3. 配置SSH客户端。打开~/.ssh/config文件,添加以下内容: Host hostname HostName hostname User user IdentityFile ~/.ssh/id_rsa 其中hostname和user分别为服务器的IP地址或域名和用户名,IdentityFile指定私钥文件的路径。 配置完成后,就可以使用ssh命令密码登录服务器了。如果您的私钥没有加密保护,则登录时不需要输入密码;如果私钥受到加密保护,则需要输入密码来解密私钥。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值