如何在 Linux / UNIX 上设置带有 DSA 公钥认证的 SSH(无密码登录)
问:如何使用 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/vivek/.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/vivek/.ssh/id_dsa. Your public key has been saved in /home/vivek/.ssh/id_dsa.pub. The key fingerprint is: 04:be:15:ca:1d:0a:1e:e2:a7:e5:de:98:4f:b1:a6:01 vivek@vivek-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 复制到远程服务器 jerry 作为 ~/.ssh/authorized_keys:
$ scp ~/.ssh/id_dsa.pub user@jerry:.ssh/authorized_keys
在名为 jerry 的远程服务器上输入的命令
登录到您的远程服务器并确保权限设置正确:
$ chmod 600 ~/.ssh/authorized_keys
任务:如何使用 DSA 密钥从客户端登录到服务器?
在本地计算机上使用 scp 或 ssh 如下:
$ ssh user@jerry
$ ssh user@remote-server.com
$ scp file user@jerry:/tmp
每次连接到名为 jerry 的远程服务器时,仍会要求您输入 DSA 密钥文件的密码,除非您在生成 DSA 密钥对时没有输入密码。
任务:如何使用 DSA 密钥从客户端登录到服务器,但无需输入密码,即无密码登录?
在 shell 提示符下输入以下命令:
输出:
$ exec /usr/bin/ssh-agent $SHELL
$ ssh-add
Enter passphrase for /home/vivek/.ssh/id_dsa: myPassword
Identity added: /home/vivek/.ssh/id_dsa (/home/vivek/.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 密码管理”f)在命令文本区域中
输入/usr/lib/openssh/gnome-ssh-askpass。g
) 单击“关闭”保存更改
h) 注销然后重新登录 GNOME。GNOME 启动后,将出现一个对话框,提示您输入密码。输入所要求的密码。从此时起,ssh、scp 或 sftp 不应再提示您输入密码。