OpenSSH技术详解:如何配置OpenSSH服务器

OpenSSH技术详解:如何配置OpenSSH服务器
OpenSSH技术详解:如何配置OpenSSH服务器

重装后的系统会为自己创建一组新的身份标识钥匙;因此客户会看到RSA 主机钥匙改变的警告。如果你想保存系统原有的主机钥匙,备份

/etc/ssh/ssh_host*key* 文件,然后在系统重装后恢复它。该过程会保留系统的身份。当客户机在该系统重装后试图连接它,它们就不会看到以上的警告信息。(还有一种解决方法见:https://www.360docs.net/doc/9b18165345.html,/forum/viewtopic.php?t=109562&start=0) 3. 配置OpenSSH 客户

要从客户机连接到OpenSSH 服务器上,你必须在客户机器上装有openssh-clients 和openssh 软件包。

3.1. 使用ssh 命令

ssh 命令是rlogin、rsh 和telnet 命令的安全替换。它允许你在远程机器上登录并在其上执行命令。使用ssh 来登录到远程机器和使用telnet 相似。要登录到一个叫做https://www.360docs.net/doc/9b18165345.html, 的远程机器,在shell 提示下键入下面的命令:

ssh https://www.360docs.net/doc/9b18165345.html,

第一次使用ssh 在远程机器上登录时,你会看到和下面相仿的消息:

The authenticity of host 'https://www.360docs.net/doc/9b18165345.html,' can't be established.

DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.

Are you sure you want to continue connecting (yes/no)?

键入yes 来继续。这会把该服务器添加到你的已知主机的列表中,如下面的消息所示:

Warning: Permanently added 'https://www.360docs.net/doc/9b18165345.html,' (RSA) to the list of known hosts.

下一步,你会看到向你询问远程主机口令的提示。在输入口令后,你就会在远程主机的shell 提示下了。如果你没有指定用户名,你在本地客户机器上登录用的用户名就会被传递给远程机器。如果你想指定不同的用户名,使用下面的命令:

ssh username@https://www.360docs.net/doc/9b18165345.html,

你还可以使用ssh -l username https://www.360docs.net/doc/9b18165345.html,。

ssh 命令可以用来在远程机器上不经shell 提示登录而执行命令。它的语法格式是:ssh hostname command。譬如,如果你想在远程主机https://www.360docs.net/doc/9b18165345.html, 上执行ls /usr/share/doc 命令,在shell 提示下键入下面的命令:

ssh https://www.360docs.net/doc/9b18165345.html, ls /usr/share/doc

在你输入了正确的口令之后,/usr/share/doc 这个远程目录中的内容就会被显示,然后你就会被返回到你的本地shell 提示下。

3.2. 使用scp 命令

scp 命令可以用来通过安全、加密的连接在机器间传输文件。它与rcp 相似。把本地文件传输给远程系统的一般语法是:

scp localfile username@tohostname:/newfilename

localfile 指定源文件,username@tohostname:/newfilename 指定目标文件。要把本地文件shadowman 传送到你在https://www.360docs.net/doc/9b18165345.html, 上的账号内,在shell 提示下键入(把username 替换成你的用户名):

scp shadowman username@https://www.360docs.net/doc/9b18165345.html,:/home/username

这会把本地文件shadowman 传输给https://www.360docs.net/doc/9b18165345.html, 上的

/home/username/shadowman 文件。

把远程文件传输给本地系统的一般语法是:

scp username@tohostname:/remotefile /newlocalfile

remotefile 指定源文件,newlocalfile 指定目标文件。源文件可以由多个文件组成。譬如,要把目录/downloads 的内容传输到远程机器https://www.360docs.net/doc/9b18165345.html, 上现存的uploads 目录,在shell 提示下键入下列命令:

scp /downloads/* username@https://www.360docs.net/doc/9b18165345.html,:/uploads/

3.3. 使用sftp 命令

sftp 工具可以用来打开一次安全互动的FTP 会话。它与ftp 相似,只不过,它使用安全、加密的连接。它的一般语法是:sftp username@https://www.360docs.net/doc/9b18165345.html,。一旦通过验证,你可以使用一组和使用FTP 相似的命令。请参阅sftp 的说明书页(man)来获取这些命令的列表。要阅读说明书页,在shell 提示下执行man sftp 命令。sftp 工具只在OpenSSH 版本2.5.0p1 以上才有。

3.4. 生成钥匙对

如果你不想每次使用ssh、scp 或sftp 时都要输入口令来连接远程机器,你可以生成一对授权钥匙。钥匙必须为每个用户生成。要为某用户生成钥匙,用想连接到远程机器的用户身份来遵循下面的步骤。如果你用根用户的身份完成了下列步骤,就只有根用户才能使用这对钥匙。

从OpenSSH 版本 3.0 开始,~/.ssh/authorized_keys2、~/.ssh/known_hosts2 和

/etc/ssh_known_hosts2 就会过时。SSH 协议1 和2 共享~/.ssh/authorized_keys、

~/.ssh/known_hosts 和/etc/ssh/ssh_known_hosts 文件。

Red Hat Linux 9 默认使用SSH 协议2 和RSA 钥匙。

窍门

如果你重装了Red Hat Linux,但是想保留现有的钥匙对,备份你的主目录中的.ssh 目录。重装后,把该目录复制回主目录。该进程可为系统上的所有用户进行,包括根用户。

3.4.1. 为版本2 生成RSA 钥匙对

使用下列步骤来为SSH 协议的版本2 生成RSA 钥匙对。从OpenSSH 2.9 开始,它已成为默认设置。

1. 要生成RSA 钥匙对与协议的版本2 合作,在shell 提示下键入下列命令:

ssh-keygen -t rsa

接受~/.ssh/id_rsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。

公钥被写入~/.ssh/id_rsa.pub。密钥被写入~/.ssh/id_rsa。决不能把密钥出示给任何人。

2. 使用chmod 755 ~/.ssh 命令改变你的.ssh 目录的许可权限。

3. 把~/.ssh/id_rsa.pub 的内容复制到你想连接的机器上的~/.ssh/authorized_keys 文件中。如果~/.ssh/authorized_keys 不存在,你可以把~/.ssh/id_rsa.pub 文件复制到那个机器上的~/.ssh/authorized_keys 文件中。

4. 如果你运行的是GNOME,跳到第3.4.4 节。如果你没在运行X 窗口系统,跳到第3.4.5 节。

3.4.2. 为版本2 生成DSA 钥匙对

使用下面的步骤来为SSH 协议的版本 2 生成DSA 钥匙对。

1. 要生成用于协议的版本2 的DSA 钥匙对,在shell 提示下键入下面的命令:

ssh-keygen -t dsa

接受~/.ssh/id_dsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。

窍门

口令句是用来验证用户的一串词汇和字符。口令句和一般口令的不同之处在于:在口令句中你可以使用空格或制表符。口令句通常比一般口令长,因为它们通常使用短语而不仅仅用一个词。

公钥被写入~/.ssh/id_dsa.pub。密钥被写入~/.ssh/id_dsa。决不能把密钥出示给任何人,这一点很重要。

2. 使用chmod 755 ~/.ssh 命令改变你的.ssh 目录的许可权限。

3. 把~/.ssh/id_dsa.pub 的内容复制到你想连接的机器中的~/.ssh/authorized_keys 文件中。如果文件~/.ssh/authorized_keys 不存在,你可以把~/.ssh/id_dsa.pub 文件复制到那个机器上的~/.ssh/authorized_keys文件中。

4. 如果你运行的是GNOME,跳到第3.4.4 节。如果你没在运行X 窗口系统,跳到第3.4.5 节。

3.4.3. 为版本1.3 和1.5 生成DSA 钥匙对

使用下面的步骤来生成用于SSH 协议版本1 的RSA 钥匙对。如果你只在使用DSA 的系统间连接,则不需要RSA 版本1.3 或RSA 版本 1.5 钥匙对。

1. 要生成RSA (版本1.3 和1.5 协议)钥匙对,在shell 提示下键入下列命令:

ssh-keygen -t rsa1

接受默认的位置(~/.ssh/identity)。输入和你的帐号口令不同的口令句。再输入一次来确认。

公钥被写入~/.ssh/identity.pub。密钥被写入~/.ssh/identity。不要把你的密钥出示给任何人。

2. 使用chmod 755 ~/.ssh 和chmod 644 ~/.ssh/identity.pub 命令改变你的.ssh 目录和密钥的许可权限。

3. 把~/.ssh/identity.pub 的内容复制到你想连接的机器中的~/.ssh/authorized_keys 文件中。如果文件~/.ssh/authorized_keys 不存在,你可以把~/.ssh/identity.pub 文件复制到远程机器上的~/.ssh/authorized_keys 文件中。

4. 如果你运行的是GNOME,跳到第3.4.4 节。如果你没在运行GNOME,跳到第3.4.5 节。

3.4.4. 在GNOME 中配置ssh-agent

ssh-agent 工具可以用来保存你的口令句,因此你不必在每次引发ssh 或scp 连接时都输入口令。如果你在使用GNOME,openssh-askpass-gnome 工具可以用来在你登录到GNOME 时提示你输入口令句,并把它一直保留到你从GNOME 中注销之时。你不必为本次GNOME 会话中任何ssh 或scp 连接输入口令或口令句。如果你不打算使用GNOME,请参阅第3.4.5 节。

要在GNOME 会话中保存口令句,遵循下列步骤:

1. 你需要安装openssh-askpass-gnome 软件包;你可以使用rpm -q openssh-askpass-gnome 命令来判定该软件包是否已被安装。如果它没有被安装,从你的Red Hat Linux 光盘集合、Red Hat FTP 镜像站点、或使用Red Hat 网络来安装它。

2. 点击「主菜单」(在面板上)=> 「首选项」=> 「更多首选项」=> 「会话」。然后点击「启动程序」标签。点击「增加」,在「启动命令」文本字段内输入/usr/bin/ssh-add。把它的优先级设为比任何现存命令都高的数字以确保它最后才执行。ssh-add 的优先级数字最好是70 或更高。优先级数字越高,优先级越低。如果你列出了其它程序,该程序的优先级应该最低。点击「关闭」来退出该程序。

3. 注销后再登录进GNOME;换一句话说,重新启动X 服务器。在GNOME 启动后,一个提示你输入口令句的对话框就会出现。输入要求的口令句。如果你把DSA 和RSA 两者都配置了,你会被提示两者都输入。从现在起,你就不会被ssh、scp 或sftp 提示输入口令了。

3.4.5. 配置ssh-agent

ssh-agent 可以用来储存你的口令句,因此你在每次使用ssh 或scp 连接时就不必总是输入它。如果你不在运行X 窗口系统,则在shell 提示中遵循这些步骤。如果你在运行GNOME,但是不想配置它来在你登录时提示你输入口令(参阅第3.4.4 节),这个过程可以在类似xterm 的终端窗口中进行。如果你在运行X 却不是GNOME,这个过程可以在终端中进行。可是,你的口令只能在该终端窗口中被记住,它不是全局设置。

1. 在shell 提示下,键入下面的命令:

exec /usr/bin/ssh-agent $SHELL

2. 然后,键入下面的命令:

ssh-add

接着,输入你的口令。如果你配置了不止一个钥匙对,你会被提示输入每个口令。

3. 当你注销后,口令句就会被忘记。你必须在每次登录到虚拟控制台或打开终端窗口时都执行这两条命令。

4. 其它资料

OpenSSH 和OpenSSL 工程处于不断地开发中,因此关于它们的最新信息通常位于它们的官方网站中。OpenSSH 和OpenSSL 工具的说明书(man)页也是个获取详细信息的好地方。

4.1. 安装了的文档

* ssh、scp、sftp、sshd 和ssh-keygen 的说明书(man)页—关于它们的说明书页包括如何使用这些命令的信息,以及所有能与它们一起使用的参数。

4.2. 有用的网站

* https://www.360docs.net/doc/9b18165345.html, — OpenSSH FAQ 网页、错误报告、邮件列表、工程宗旨、以及关于安全功能的更技术性的解释。

* https://www.360docs.net/doc/9b18165345.html, — OpenSSL FAQ 网页、邮件列表、以及对于工程宗旨的描述。

* https://www.360docs.net/doc/9b18165345.html, —用于其它平台的SSH 客户软件。

相关主题
相关文档
最新文档