请注意,从远程机器显示终端窗口也被视为显示图像。
10.4.4. SSH 套件
10.4.4.1. 引言
大多数 UNIX 和 Linux 系统现在运行 Secure SHell 以排除随之而来的安全风险 远程登录. 大多数 Linux 系统将运行 OpenSSH 的一个版本,它是 SSH 协议的开源实现,通过不受信任的网络在不受信任的主机之间提供安全的加密通信。 在标准设置中,X 连接会自动转发,但也可以使用安全通道转发任意 TCP/IP 端口。
这个 SSH 客户端连接并登录到指定的主机名。 用户必须向远程机器提供他的身份,如 sshd_配置 文件,通常可以在 /etc/ssh. 配置文件是不言自明的,默认情况下启用最常见的功能。 如果您需要帮助,您可以在 sshd的 手册页。
当用户的身份被服务器接受后,服务器要么执行给定的命令,要么登录机器并在远程机器上为用户提供一个正常的外壳。 与远程命令或 shell 的所有通信都将自动加密。
当远程计算机上的命令或 shell 退出并且所有 X11 和 TCP/IP 连接都已关闭时,会话将终止。
首次连接主机时,使用 SSH 集合中包含的任何程序,您需要确定该主机的真实性并确认您要连接:
莱尼~> ssh 块
无法确定主机“blob (10.0.0.1)”的真实性。 RSA 指纹为 18:30:50:46:ac:98:3c:93:1a:56:35:09:8d:97:e3:1d。 您确定要继续连接吗(是/否)? 含
警告:将“blob,192.168.30.2”(RSA)永久添加到已知主机列表中。
上次登录: 28 年 13 月 29 日星期六 19:2002:XNUMX 来自 Octine 此空间出租。
莱尼在~
莱尼~> ssh 块
无法确定主机“blob (10.0.0.1)”的真实性。 RSA 指纹为 18:30:50:46:ac:98:3c:93:1a:56:35:09:8d:97:e3:1d。 您确定要继续连接吗(是/否)? 含
警告:将“blob,192.168.30.2”(RSA)永久添加到已知主机列表中。
上次登录: 28 年 13 月 29 日星期六 19:2002:XNUMX 来自 Octine 此空间出租。
莱尼在~
输入三个字符的“是”很重要,而不仅仅是“y”。 这将编辑您的 〜/.ssh/known_hosts
文件,请参阅第 10.4.4.3 节。
如果您只想检查远程机器上的某些内容,然后在本地主机上返回提示,您可以将要远程执行的命令作为参数提供给 SSH:
莱尼~> ssh blob 谁
jenny@blob 的密码:
根 | 终端2 | 七月 | 24 | 07:19 |
lena | 终端3 | 七月 | 23 | 22:24 |
lena | 0: | 七月 | 25 | 22:03 |
莱尼~> unname -n
magrat.example.com
10.4.4.2. X11和TCP转发
如果 X11转发 条目设置为 含 在目标机器上并且用户正在使用 X 应用程序, 显示屏玻璃制造 环境变量设置后,到 X11 显示器的连接会自动转发到远程端,这样从 shell 启动的任何 X11 程序都将通过加密通道,并且到真实 X 服务器的连接将从本地机器。 用户不应手动设置 显示屏玻璃制造. X11 连接的转发可以在命令行或在 sshd的 配置文件。
的价值 显示屏玻璃制造 通过设置 SSH 将指向服务器计算机,但显示编号大于零。 这是正常现象,发生的原因是 SSH 创造一个 代理 服务器计算机上的 X 服务器(运行 X 客户端应用程序)用于通过加密通道转发连接。
这一切都是自动完成的,因此当您输入图形应用程序的名称时,它会显示在您的本地计算机上,而不是显示在远程主机上。 我们用 时钟 在示例中,由于它是一个小程序,通常已安装并且非常适合测试:
图 10-3。 SSH X11 转发
SSH 还会在服务器机器上自动设置 Xauthority 数据。 为此,它将生成一个随机授权 cookie,将其存储在 权威 在服务器上,并验证任何转发的连接都带有此 cookie,并在连接打开时将其替换为真实的 cookie。 真正的身份验证 cookie 永远不会发送到服务器计算机(并且不会以明文形式发送 cookie)。
可以在命令行或配置文件中指定通过安全通道转发任意 TCP/IP 连接。
X服务器
此过程假设您在要显示来自远程主机的应用程序的客户端上有一个正在运行的 X 服务器。 客户端可能与远程主机的架构和操作系统不同,只要它可以运行 X 服务器,例如 Cygwin(为 MS Windows 客户端和其他人实现 X.org 服务器)或 Exceed,应该是可能的与任何 Linux 或 UNIX 机器建立远程连接。
10.4.4.3. 服务器认证
这个 SSH 客户端/服务器系统自动维护和检查一个数据库,该数据库包含它曾经使用过的所有主机的标识。 主机密钥存储在 $HOME/.ssh/已知主机 在用户的主目录中。 此外,该文件 /etc/ssh/ssh_known_hosts 自动检查已知主机。 任何新主机都会自动添加到用户的文件中。 如果主机的身份发生变化, SSH 对此发出警告并禁用密码验证以防止特洛伊木马获取用户密码。
这种机制的另一个目的是防止中间人攻击,否则可能会被用来规避加密。 在需要高安全性的环境中, sshd的 甚至可以配置为防止登录到主机密钥已更改或未知的机器。
10.4.4.4. 安全远程复制
SSH 套件提供 SCP 作为安全的替代品 RCP 曾经流行的命令仅当 RSH
存在。 SCP 使用 SSH 用于数据传输,使用相同的身份验证并提供相同的安全性 SSH。 不像 RCP, SCP 如果身份验证需要密码或密码短语,将询问密码或密码:
莱尼 /var/tmp> scp Schedule.sdc.gz blob:/var/tmp/
lenny@blob 的密码:
Schedule.sdc.gz 100% |********************************| 100 KB 00:00
莱尼 /var/tmp>
莱尼 /var/tmp> scp Schedule.sdc.gz blob:/var/tmp/
lenny@blob 的密码:
Schedule.sdc.gz 100% |********************************| 100 KB 00:00
莱尼 /var/tmp>
任何文件名都可以包含主机和用户规范,以指示文件将复制到/从该主机复制。 允许在两个远程主机之间进行复制。 有关更多信息,请参阅信息页面。
如果您更愿意使用类似 FTP 的界面,请使用 SFTP:
莱尼 /var/tmp> sftp 块 正在连接到 blob... lenny@blob 的密码:
sftp> cd /变量/tmp
sftp> 获得 Sch*
获取 /var/tmp/Schedule.sdc.gz 到 Schedule.sdc.gz sftp> 再见
莱尼 /var/tmp>
莱尼 /var/tmp> sftp 块 正在连接到 blob... lenny@blob 的密码:
sftp> cd /变量/tmp
sftp> 获得 Sch*
获取 /var/tmp/Schedule.sdc.gz 到 Schedule.sdc.gz sftp> 再见
莱尼 /var/tmp>
安全复制或 FTP GUI
对命令行还不满意? 尝试 Konqueror 的安全远程复制功能,或安装 Putty。
10.4.4.5. 认证密钥
这个 SSH-凯基 命令生成、管理和转换认证密钥 SSH. 它可以创建供 SSH 协议版本 1 使用的 RSA 密钥和供 SSH 协议版本 2 使用的 RSA 或 DSA 密钥。
通常,希望将 SSH 与 RSA 或 DSA 身份验证一起使用的每个用户都运行一次以创建身份验证密钥 $HOME/.ssh/身份, id_dsa or id_rsa. 此外,系统管理员可以使用它来为系统生成主机密钥。
通常这个程序会生成密钥并要求提供一个文件来存储私钥。 公钥存储在同名的文件中,但 .pub 附加。 该程序还要求输入密码。 密码短语可以为空以表示没有密码短语(主机密钥必须具有空密码短语),或者它可以是任意长度的字符串。
没有办法恢复丢失的密码。 如果密码丢失或忘记,则必须生成新密钥并将其复制到相应的公钥中。
我们将在练习中学习 SSH 密钥。 所有信息都可以在手册页或信息页中找到。