如何配置linux的ssh服务,从客户端远程登录时使用public key authentication?

ssh协议为我们提供安全的远程登陆,远程复制等功能。现在几乎所有版本的linux都有安装openssh。那么如何实现ssh客户端通过public key authentication访问openssh服务器呢,而不是使用简单的密码认证。

安 全表现在:首先,不需要通过网络传输ssh key,其次,ssh key是经过加密后保存的,即使让人偷了还需要有加密串才能解密。相反,如果密码被偷了,可以直接用来登陆的。这样还可以避免别人对我们的ssh服务器进 行暴力破解。当然有人通过修改ssh默认端口,但是这根本不能起到多大的作用。端口扫描工具很容易就能查到你的开放端口。

我 们这边提到的ssh key实际上是一对key,分别保存在两个文件中。其中私钥也就是我们所谓的密钥保存在客户端的机器上,并使用密窜加密。而公钥则存储在服务器上。在创建 ssh链接时,客户端和服务端之间使用公钥和私钥进行协商,如果它们之间匹配(当然是在加密状态下),则成功创建链接。

了解了基本的过程之后实现起来就不难了。我们需要做的是:
1.生成公钥私钥对相应的文件并分别放到客户端和服务端
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_dsa.
Your public key has been saved in /home/user1/.ssh/id_dsa.pub.
The key fingerprint is:
4c:92:e9:88:35:ed:b5:81:ab:6f:97:d5:50:e6:7a:75

其中id_sda是私钥,id_dsa.pub是公钥。
你现在可以通过ftp或scp将公钥传到远程的ssh服务器上。
scp id_sda.pub remote_login@remote_server
(当然,现在你们还是使用密码认证,而不是公钥认证,还没完成呢)

2.远程登陆到ssh服务器
ssh -l remote_login remote_server
在远程服务器上的用户当前目录,看看有没有.ssh目录,通常都会有的,如果没有,则创建。
remotehost$ mkdir -p ~/.ssh
remotehost$ chmod 700 ~/.ssh
把公钥文件id_dsa.pub 的内容附加到 ~/.ssh/authorized_keys
remotehost$ cat id_dsa.pub >> ~/.ssh/authorized_keys
remotehost$ chmod 600 ~/.ssh/authorized_keys

3.配置ssh服务器,允许客户端通过 public-key authentication来登陆
用vim打开ssh服务器的配置文件查看PubkeyAuthentication 配置是不是yes,如果不是则修改并重起sshd守护进程
/etc/ssh/sshd_config:
PubkeyAuthentication yes
之后就你可以通过public-key authentication来访问ssh服务器了。如果登陆失败,则可以在运行ssh时加上-v选项来查看失败的具体原因。

如果你的客户端是在window下使用的,那么你需要使用putty-gen来生成

如何配置linux的ssh服务,从客户端远程登录时使用public key authentication?》上有 1 条评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>