LPI Linux 认证/安全外壳 (SSH)
(LPIC-2 版本 4.5)
权重 4
描述: 候选人应该能够配置 SSH 守护进程。该目标包括管理密钥和为用户配置 SSH。候选人还应该能够通过 SSH 转发应用程序协议并管理 SSH 登录。
关键知识领域
- OpenSSH 配置文件、工具和实用程序。
- 超级用户和普通用户的登录限制。
- 管理和使用服务器和客户端密钥以使用和不使用密码登录。
- 使用来自多个主机的多个连接来防止在配置更改后连接到远程主机的连接丢失。
术语和实用程序
ssh
sshd
/etc/ssh/sshd_config
/etc/ssh/
- 私钥和公钥文件
PermitRootLogin
,PubKeyAuthentication
,AllowUsers
,PasswordAuthentication
,Protocol
描述:候选人应该能够配置 sshd 以允许或拒绝 root 登录,启用或禁用 X 转发。该目标包括生成服务器密钥,生成用户的公钥/私钥对,将公钥添加到用户的 authorized_keys 文件以及为所有用户配置 ssh-agent。候选人还应该能够配置端口转发以通过 ssh 隧道传输应用程序协议,配置 ssh 以支持 ssh 协议版本 1 和 2,在系统维护期间禁用非 root 登录,配置受信任的客户端以在没有密码的情况下进行 ssh 登录,以及从多个主机进行多个连接以防止在配置更改后连接到远程主机的连接丢失。
关键文件、术语和实用程序包括
ssh, sshd /etc/ssh/sshd_config ~/.ssh/identity.pub, ~/.ssh/identity ~/.ssh/authorized_keys .shosts, .rhosts
OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。它使用安全的加密网络连接工具替换 telnet、ftp、rlogin、rsh 和 rcp。OpenSSH 支持 SSH 协议的版本 1.3、1.5 和 2.0。
如果您使用 OpenSSH 工具,则可以增强机器的安全性。使用 OpenSSH 工具的所有通信(包括密码)都已加密。Telnet 和 ftp 使用明文密码并以未加密的形式发送所有信息。信息可以被拦截,密码可以被检索,然后您的系统可能会被未经授权的人员使用拦截到的密码之一登录到您的系统而被破坏。在可能的情况下应使用 OpenSSH 实用程序集以避免这些安全问题。使用 OpenSSH 的另一个原因是它会自动将 DISPLAY 变量转发到客户端机器。换句话说,如果您在本地机器上运行 X 窗口系统,并且您使用 ssh 命令登录到远程机器,当您在远程机器上执行需要 X 的程序时,它将显示在您的本地机器上。如果您更喜欢图形系统管理工具但并非始终可以物理访问您的服务器,这将非常方便。
ssh 命令是 rlogin、rsh 和 telnet 命令的安全替代品。它允许您登录到远程机器并执行远程机器上的命令。
使用 ssh 登录到远程机器类似于使用 telnet。要登录到名为 penguin.example.net 的远程机器,请在 shell 提示符处键入以下命令:ssh penguin.example.net
第一次使用 ssh 连接到远程机器时,您将看到类似于以下内容的消息:无法验证主机 'penguin.example.net' 的真实性。
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)? Type yes to continue. This will add the server to your list of known hosts as seen in the following message: Warning: Permanently added 'penguin.example.net' (DSA) to the list of known hosts.
接下来,您将看到一个提示,要求您输入远程机器的密码。输入密码后,您将位于远程机器的 shell 提示符处。如果您在没有任何命令行选项的情况下使用 ssh,则您在本地客户端机器上登录的用户名将被传递到远程机器。如果您想指定不同的用户名,请使用以下命令
ssh -l username penguin.example.net
您也可以使用语法 ssh [email protected]。ssh 命令可用于在远程机器上执行命令,而无需登录到 shell 提示符。语法是 ssh hostname command。例如,如果您想在远程机器 penguin.example.net 上执行命令 ls /usr/share/doc,请在 shell 提示符处键入以下命令
ssh penguin.example.net ls /usr/share/doc
输入正确的密码后,将显示 /usr/share/doc 的内容,您将返回到 shell 提示符。
scp 命令可用于通过安全加密连接在机器之间传输文件。它类似于 rcp。
将本地文件传输到远程系统的通用语法是 scp localfile user@hostname:/newfilename。localfile 指定源,user@hostname:/newfilename 组指定目标。要将本地文件 shadowman 传输到您在 penguin.example.net 上的帐户,请在 shell 提示符处键入以下内容(将 user 替换为您的用户名)
scp shadowman [email protected]:/home/user
这将把本地文件 shadowman 传输到 penguin.example.net 上的 /home/user/shadowman。将远程文件传输到本地系统的通用语法是 scp user@hostname:/remotefile /newlocalfile。remotefile 指定源,newlocalfile 指定目标。
可以指定多个文件作为源文件。例如,要将目录 /downloads 的内容传输到远程机器 penguin.example.net 上名为 uploads 的现有目录,请在 shell 提示符处键入以下内容
scp /downloads/* [email protected]:/uploads/
sftp 实用程序可用于打开安全交互式 FTP 会话。它类似于 ftp,但使用安全加密连接。通用语法是 sftp [email protected]。验证后,您可以使用一组类似于使用 FTP 的命令。有关这些命令的列表,请参阅 sftp 手册页。要阅读手册页,请在 shell 提示符处执行命令 man sftp。sftp 实用程序仅在 OpenSSH 版本 2.5.0p1 及更高版本中可用。
如果您不想每次 ssh、scp 或 sftp 到远程机器时都输入密码,则可以生成授权密钥对。
注意:单独的授权密钥对 必须为 SSH 协议 1 (RSA) 和 SSH 协议 2 (DSA) 创建单独的授权密钥对。
警告 :每个用户都需要他们自己的密钥对 !
必须为每个用户生成密钥。要为用户生成密钥,请按照以下步骤操作,操作用户是想要连接到远程机器的用户。如果您以 root 身份完成以下步骤,则只有 root 才能使用这些密钥。
使用以下步骤生成 DSA 密钥对。DSA 由 SSH 协议 2 使用,是 Red Hat 的默认协议。1. 要生成用于与协议版本 2.0 配合使用的 DSA 密钥对,请在 shell 提示符处键入以下命令
ssh-keygen -t dsa
接受 ~/.ssh/id_dsa 的默认文件位置。输入与您的帐户密码不同的密码,然后再次输入以确认。
(密码是用于验证用户的单词和字符的字符串。密码与密码的不同之处在于,您可以在密码中使用空格或制表符。密码通常比密码更长,因为它们通常是短语而不是仅仅是一个词。)
2. 使用命令 chmod 755 ~/.ssh 更改 .ssh 目录的权限。
3. 将 ~/.ssh/id_dsa.pub 的内容复制到你要连接的机器上的 ~/.ssh/authorized_keys2 中。如果 ~/.ssh/authorized_keys2 文件不存在,你可以将 ~/.ssh/id_dsa.pub 文件复制到另一台机器上的 ~/.ssh/authorized_keys2 文件中。
使用以下步骤为 SSH 协议的 2.0 版本生成 RSA 密钥对。
1. 要生成用于与协议版本 2.0 配合使用的 RSA 密钥对,请在 shell 提示符下键入以下命令
ssh-keygen -t rsa
接受默认的文件位置 ~/.ssh/id_rsa。输入一个与您的帐户密码不同的密码短语,然后再次输入以确认。[1]
2. 使用命令 chmod 755 ~/.ssh 更改 .ssh 目录的权限。
3. 将 ~/.ssh/id_rsa.pub 的内容追加到你要连接的机器上的 ~/.ssh/authorized_keys2 中。如果 ~/.ssh/authorized_keys2 文件不存在,你可以将 ~/.ssh/id_rsa.pub 文件复制到另一台机器上的 ~/.ssh/authorized_keys2 文件中。
使用以下步骤生成 RSA 密钥对,它由 SSH 协议的版本 1 使用。
1. 要生成 RSA(用于版本 1.3 和 1.5 协议)密钥对,请在 shell 提示符下键入以下命令
ssh-keygen
接受默认的文件位置 (~/.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 文件中。
您可以通过 SSH 转发 X11 端口以启用加密的 X11 连接。无需导出 DISPLAY 变量或调用 xhost 实用程序。
在服务器端,您必须检查 /etc/ssh/sshd_config 文件,以确保 “X11Forwarding” 选项设置为 “yes”。
在客户端,使用 -X 选项
ssh -X user@remotehost
当远程主机提示出现时,启动 X11 应用程序
xterm &
来自远程主机的 xterm 窗口将在您的本地桌面上打开。