Linux/Unix系统中SSH命令的用法
连接到服务器时,任何具有安全意识的Linux用户都将始终使用SSH协议。
这是因为SSH是一种安全协议,可对通过网络发送的数据或者信息进行加密。
SSH取代了90年代的旧协议和不安全协议,例如telnet和rlogin。
在本教程中,我们通过示例介绍SSH命令的用法。
默认情况下,SSH在TCP/IP端口22上运行
检查SSH服务是否在Linux系统上运行
如果当前登录到Linux系统,并且要检查SSH是否正在运行,请执行以下命令
# systemctl status sshd
另外,您可以通过使用netstat
命令来检查ssh正在侦听服务器上的端口22。
# netstat -pnltu
两种技术已确认SSH协议在端口22上运行。
使用SSH登录到远程系统
要以root用户从Linux计算机登录到远程系统,请使用以下语法:
# ssh root@host-ip-address
例如,我要登录到远程Debian PCIP 173.82.208.144
# ssh [email protected]
如果您是第一次连接,将会看到以下提示
键入" yes"将服务器添加到位于~~ ..ssh/known_hosts中的" known_hosts"列表中。
每个服务器都包含一个主机密钥,该主机密钥是一个加密密钥。
此密钥用于使用SSH协议对系统进行身份验证。
接下来,将提示您输入远程系统的密码。
提供密码,然后按" ENTER"以登录到系统。
以普通用户身份登录系统
有时,如果禁用了远程root登录,则可能需要使用普通用户帐户登录到远程系统。
为此,请遵循以下语法
# ssh username@host-ip-address
或者
# ssh -l username host-ip-address
要以驻留在远程Debian系统上的用户" john"的身份登录,请执行以下命令
# ssh [email protected]
您可以使用以下命令获得相同的结果。
# ssh -l john 173.82.208.144
配置无密码认证
有时,您可能会不断需要访问您的远程系统,或者您的服务可能需要访问这些系统。
密码认证可能会导致时间浪费或者阻碍对需要访问远程系统的自动化应用程序的访问。
因此,为远程服务器配置无密码的SSH身份验证很方便。
步骤1:产生SSH金钥
第一步将使用以下命令在服务器上生成SSH密钥:
# ssh-keygen
在每一步提示时,只需按" ENTER"以保持默认值
公钥" id_rsa.pub"保存在"~/.ssh /"目录中
步骤2:将SSH公钥复制到远程客户端
下一步将是将生成的公共密钥复制到远程客户端系统。
为此,我们将使用ssh-copy-id命令。
该命令将SSH密钥作为授权密钥复制到远程客户端。
这样可以进行后续的自动无密码登录。
# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
现在,您可以无缝登录到远程Debian系统,而无需提示输入密码
公钥保存在客户端系统的~/.ssh/authorized_keys文件中。
需要注意的几点
SSH客户端将主机密钥存储到与其连接的系统。
这些密钥被称为"已知主机密钥",并存储在"~/.ssh /"目录中。私钥–
id_rsa
只能由root用户访问,并且不应复制到任何系统。
如果泄露给另一个第三方,则可能导致中间人攻击,从而使客户端系统受到黑客的威胁。