什么是 SSH?
SSH 代表安全外壳协议(Secure Shell)。通过 SSH,您可以以安全的方式访问远程计算机,因为连接是加密的。通过 Linux 终端中的 ssh 命令,我们可以连接到远程 Linux 服务器并像在自己的计算机上一样工作。在本教程结束时,您应该完全了解如何使用 SSH 连接到远程服务器,在 Ubuntu.
语法
语法是您如何使用 ssh 命令的规则。您可以重新排列语法,但必须遵循直接的格式。以下是使用 ssh 命令的语法示例:
|
1 |
ssh remote_host |
您要连接的域名或 IP 地址就是如上命令中所示的 remote_host。此语法假设您在远程系统和本地系统上的用户名相同。但是,如果用户名不同,您可以使用此命令来表示:
|
1 |
ssh remote_username@remote_host |
在连接到服务器时,您需要立即通过提供密码来验证您的身份。输入命令 exit 以返回到您的本地会话。
如何配置 SSH
Ubuntu 中的主要 sshd 配置文件位于 /etc/ssh/sshd_config。如果您更改了 SSH 配置,SSHD 服务器设置将自动更改。在进行任何配置之前,请确保使用此命令备份该文件的当前版本:
|
1 |
sudo cp /etc/ssh/sshd_config{,.bak} |
使用文本编辑器打开它:
|
1 |
sudo nano /etc/ssh/sshd_config |
您应该保留此文件中的大多数参数不变。但是,有几件事您应该注意:
|
1 |
Port 22 |
端口声明指示 SSHD 服务器等待连接的端口。默认值为 22。除非有特定原因,否则您无需更改此设置:
|
1 2 3 |
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key |
主机密钥声明指示全局主机密钥的位置:
|
1 2 |
SyslogFacility AUTH LogLevel INFO |
应记录的日志级别由这两个项目指示。如果您在使用 SSH 时遇到问题,确定问题的一个极好方法是增加日志数量:
|
1 2 3 |
LoginGraceTime 120 PermitRootLogin yes StrictModes yes |
这些选项定义了登录的一些信息,以在配置文件不安全时防止未经授权的登录:
|
1 2 |
X11Forwarding yes X11DisplayOffset 10 |
这些参数配置被称为 X11 转发功能。通过这种方式,您可以在本地系统上显示远程系统的 GUI。在连接到 SSH 客户端时,您必须在服务器上启用此选项,并使用 -X 选项。
进行更改后,保存文件并通过按 CTRL-X 和 Y 然后按 Enter 关闭它。如果您更改了 / etc / ssh / sshd_config 中的设置,则必须重启 sshd 服务器以执行更改:
|
1 |
sudo service ssh restart |
对于 systemd 系统(例如 Ubuntu 16.04 或 Debian Jessie),请使用此命令:
|
1 |
sudo systemctl restart ssh |
彻底测试您的更改,以确保一切正常运行。如果您进行了任何更改,您可能应该保持一些会话处于活动状态。通过这种方式,您可以在必要时恢复配置。
如何使用密钥登录 SSH?使用密码登录远程系统是可行的。但是,最好设置基于密钥的身份验证。
什么是基于密钥的身份验证?
基于密钥的身份验证会创建两对称为私钥和公钥的密钥。私钥保存在用户的计算机上,并得到了保护和保密。公钥可以提供给任何人,或存储在您想要访问的任何服务器上。如果您尝试使用密钥对进行连接,服务器会使用公钥为用户计算机生成一条消息。用户只能使用私钥读取该消息。然后,用户计算机向服务器发送响应,服务器便知道该用户是真实的。设置密钥后,整个过程会在后台自动完成。
如何创建 SSH 密钥
SSH 密钥应该在您希望登录的计算机上生成。这通常是您的本地计算机。在命令行中输入以下内容:
|
1 |
ssh-keygen -t rsa |
然后,按回车键(ENTER KEY)接受默认设置。它将在 ~/.ssh/id_rsa.pub 和 ~/.ssh/id_rsa 生成您的密钥。接下来,输入以下命令切换到 .ssh 目录:
|
1 |
cd ~/.ssh |
这些是文件权限:
|
1 |
ls -l |

如您所见,只有所有者才能读取和写入 id_rsa 文件。因此,您必须妥善保管它。但是,您可以共享 id_rsa.pub 文件,并为此操作设置适当的权限。下一步是使用以下语法将公钥传输到服务器:
|
1 |
ssh-copy-id remote_host |
这将启动一个 SSH 会话,您必须使用密码进行身份验证。输入密码后,您的公钥将被复制到服务器’的授权密钥文件中,以便您下次登录时无需密码。
如何禁用密码身份验证
如果生成了 SSH 密钥,您可以通过禁用仅密码身份验证来提高服务器的安全性。您可以使用安装在服务器上的公钥通过私钥登录服务器,而无需使用控制台。
注意:在继续此步骤之前,请确保您已在服务器上安装了公钥。否则您将被阻拦!
使用以下命令打开 sshd 配置文件:
|
1 |
sudo nano /etc/ssh/sshd_config |
通过删除开头的 #,找到并取消注释读取 password Authentication check 的那一行。然后您可以将值更改为 “no”:
|
1 |
PasswordAuthentication no |
PubkeyAuthentication 和 ChallengeResponseAuthentication 是默认设置的,应该如下所示:
|
1 2 |
PubkeyAuthentication yes ChallengeResponseAuthentication no |
您不应更改这两个设置。之后,在做出更改后保存并关闭文件。接下来,使用以下命令重启 SSH 守护进程:
|
1 |
sudo systemctl restart ssh |
最后,您已禁用了密码身份验证,现在只能使用 SSH 密钥身份验证访问您的服务器。
结论
在本教程中,我们向您展示了如何在 Ubuntu 中使用 SSH 安全地连接到远程服务器。如果您是一名系统管理员,学习如何使用 SSH 是至关重要的,因此在掌握本教程后,您可以继续学习 SSH 的更多高级功能。
祝您使用愉快!
评论
暂无评论。发表第一条评论吧。