Howto Linux/UNIX使用DSA公共密钥身份验证(无密码登录)设置SSH

时间:2020-01-09 10:43:44  来源:igfitidea点击:

问题:如何通过DSA公钥身份验证设置SSH?
我有一个名为tom的Linux笔记本电脑和一个名为jerry的远程Linux服务器。
如何设置基于DSA的身份验证,因此不必执行密码?

答:DSA公钥认证只能在每个系统/用户的基础上建立,即,它不是系统范围的。
您将在两台计算机上为SSH版本2设置具有DSA公钥身份验证的ssh:

#1机器:您的笔记本电脑叫tom#2机器:您的远程服务器叫jerry

在笔记本电脑/台式机(本地计算机)上执行命令

首先登录名为tom的本地计算机,然后执行以下命令。

步骤1:生成DSA密钥对

使用ssh-keygen命令,如下所示:

$ ssh-keygen -t dsa

输出:

Enter file in which to save the key (/home/Hyman/.ssh/id_dsa):  Press [Enter] key
Enter passphrase (empty for no passphrase): myPassword
Enter same passphrase again: myPassword
Your identification has been saved in /home/Hyman/.ssh/id_dsa.
Your public key has been saved in /home/Hyman/.ssh/id_dsa.pub.
The key fingerprint is:
04:be:15:ca:1d:0a:1e:e2:a7:e5:de:98:4f:b1:a6:01 Hyman@Hyman-desktop

注意:
a)请输入与您的帐户密码不同的密码,并进行确认。

b)公钥被写入/home/you/.ssh/id_dsa.pub。

c)私钥被写入/home/you/.ssh/id_dsa。

d)永不放弃您的私钥很重要。

步骤2:设置目录权限

接下来,确保您对.ssh目录具有正确的权限:

$ cd
$ chmod 755 .ssh

步骤3:复制公钥

现在,将计算机#1(tom)上的文件~/.ssh/id_dsa.pub复制为~/.ssh/authorized_keys到远程服务器jerry:

$ scp ~/.ssh/id_dsa.pub user@jerry:.ssh/authorized_keys

在名为jerry的远程服务器上执行的命令

登录到您的远程服务器,并确保权限设置正确:

$ chmod 600 ~/.ssh/authorized_keys

如何使用DSA密钥从客户端登录到服务器?

在本地计算机上按以下方式使用scp或者ssh:

$ ssh user@jerry
$ ssh [email protected]
$ scp file user@jerry:/tmp

每次您连接到名为jerry的远程服务器时,仍然会要求您提供DSA密钥文件的密码,除非您在生成DSA密钥对时未输入密码。

如何使用DSA密钥从客户端登录到服务器,但不执行密码,即无密码登录?

在shell提示符下执行以下命令:

$ exec /usr/bin/ssh-agent $SHELL
$ ssh-add

输出:

Enter passphrase for /home/Hyman/.ssh/id_dsa: myPassword
Identity added: /home/Hyman/.ssh/id_dsa (/home/Hyman/.ssh/id_dsa)

一次执行您的密码。
现在,无论何时使用ssh,scp或者sftp命令,都不会提示您输入密码。

如果您正在使用Gnome之类的GUI,请使用以下命令:

$ ssh-askpass

或者

$ /usr/lib/openssh/gnome-ssh-askpass

要在Debian/Ubuntu下的GNOME会话中保存密码,请执行以下操作:a)单击系统b)选择首选项c)选择会话d)单击新建e)在名称文本区域中输入OpenSSH Password Management在命令文本区域中输入/usr/lib/openssh/gnome-ssh-askpass

g)单击关闭以保存更改。
h)注销,然后重新登录到GNOME。
启动GNOME后,将出现一个对话框,提示您输入密码。
输入要求的密码。
从现在开始,ssh,scp或者sftp不会提示您输入密码。