如何使用SSH命令连接到远程主机
Secure Shell(SSH)是用于客户端和服务器之间的加密连接的加密网络协议。 ssh客户端会创建到远程计算机上SSH服务器的安全连接。加密的连接可用于在服务器上执行命令,X11 tune,端口转发等。
有许多SSH客户端免费和商业可用,其中OpenSSH是使用最广泛的客户端。它在所有主要平台上都可用,包括Linux,OpenBSD,Windows,macOS等。
在本文中,我们将说明如何使用OpenSSH命令行客户端(ssh
)登录到远程计算机并运行命令或执行其他操作。
安装OpenSSH客户端
OpenSSH客户端程序称为ssh
,可以从终端调用。 OpenSSH客户端软件包还提供了与ssh
命令一起安装的其他SSH实用程序,例如scp
和sftp
。
在Linux上安装OpenSSH客户端
默认情况下,大多数Linux发行版上都预安装了OpenSSH客户端。如果您的系统未安装ssh客户端,则可以使用发行版的软件包管理器进行安装。
在Ubuntu和Debian上安装OpenSSH
sudo apt update
在CentOS和Fedora上安装OpenSSH
sudo dnf install openssh-clients
在Windows 10上安装OpenSSH客户端
大多数Windows用户正在使用Putty通过SSH连接到远程计算机。但是,Windows 10的最新版本包括OpenSSH客户端和服务器。这两个软件包都可以通过GUI或PowerShell安装。
要找到OpenSSH软件包的确切名称,请键入以下命令:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
该命令应返回以下内容:
Name : OpenSSH.Client~~~~0.0.1.0State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
一旦知道软件包名称,请运行以下命令来安装它:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
成功后,输出将如下所示:
Path :Online : True
RestartNeeded : False
在macOS上安装OpenSSH客户端
macOS附带默认安装的OpenSSH客户端。
如何使用ssh
命令
必须满足以下要求,才能通过SSH登录到远程计算机:
- 必须在远程计算机上运行SSH服务器。
- 必须在远程计算机防火墙中打开SSH端口。
- 您必须知道用户名和密码远程帐户。该帐户需要具有适当的特权才能进行远程登录。
ssh
命令的基本语法如下:
ssh [OPTIONS] [[email protected]]:HOST
要使用ssh
命令,请打开终端或PowerShell,然后键入ssh
,然后输入远程主机名:
ssh ssh.myfreax.com
首次通过SSH连接到远程计算机时,您会看到类似以下的消息。
The authenticity of host 'ssh.myfreax.com (192.168.121.111)' can't be established.ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?
每个主机都有一个唯一的指纹,该指纹存储在~/.ssh/known_hosts
文件中。
键入yes
存储远程指纹,然后系统会提示您输入密码。
Warning: Permanently added 'ssh.myfreax.com' (ECDSA) to the list of known hosts.[email protected]'s password:
输入密码后,您将登录到远程计算机。
未提供用户名时,ssh
命令将使用当前系统登录名。
要以其他用户身份登录,请以以下格式指定用户名和主机:
ssh [email protected]
用户名也可以使用-l
选项指定:
ssh -l username hostname
默认情况下,如果未提供任何端口,则SSH客户端将尝试连接到端口22上的远程服务器。在某些服务器上,管理员正在更改默认SSH端口以添加一个额外的层。通过降低自动攻击的风险来提高服务器的安全性。
要在非默认端口上进行连接,请使用-p
选项指定端口:
ssh -p 5522 [email protected]
如果遇到身份验证或连接问题,请使用-v
选项告诉ssh
打印调试消息:
ssh -v [email protected]
要提高详细程度,请使用-vv
或-vvv
。
ssh
命令接受许多选项。
有关所有选项的完整列表,请在终端中输入man ssh
,以阅读ssh
手册页。
SSH配置文件
如果您每天都通过SSH连接到多个远程系统,则会发现记住所有的远程IP地址,不同的用户名,非标准端口和各种命令行选项非常困难,如果不是这样的话不可能的。
OpenSSH客户端读取在每个用户的配置文件中设置的选项(~/.ssh/config
)。在此文件中,您可以为所连接的每台远程计算机存储不同的SSH选项。
一个示例SSH配置如下所示:
Host dev HostName dev.myfreax.com
User mike
Port 4422
当您通过键入ssh dev
调用ssh客户端时,该命令将读取~/.ssh/config
文件并使用为开发主机指定的连接详细信息。在此示例中,ssh dev
等效于以下内容:
ssh -p 4422 [email protected]
有关详细信息,请查看关于 SSH配置文件的文章。
公钥认证
SSH协议支持各种身份验证机制。基于公钥的身份验证机制使您无需登录密码即可登录到远程服务器。
该方法通过生成用于认证的一对加密密钥来工作。专用密钥存储在客户端设备上,并且公用密钥被传输到您要登录的每个远程服务器。必须将远程服务器配置为接受密钥身份验证。
如果本地计算机上还没有SSH密钥对,则可以通过输入以下内容生成一个:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
系统会要求您输入安全密码。是否要使用密码取决于您自己。拥有密钥对后,请将公共密钥复制到远程服务器:
ssh-copy-id [email protected]
输入远程用户密码,并将公钥添加到远程用户authorized_keys
文件中。
一旦密钥被上传,您就可以登录到远程服务器而无需提示输入密码。通过设置基于密钥的身份验证,可以简化登录过程并提高整体服务器安全性。
端口转发
SSH隧道或SSH端口转发是一种在客户端和服务器计算机之间创建加密的SSH连接的方法,通过该连接可以中继服务端口。
SSH转发对于传输使用未加密协议的服务(例如VNC或FTP),访问受地理位置限制的内容或绕过中间防火墙的网络数据很有用。基本上,您可以转发任何TCP端口并通过安全的SSH连接建立隧道流量。
三种类型的SSH端口转发:
本地端口转发
本地端口转发允许您将连接从客户端主机转发到SSH服务器主机,然后再转发到目标主机端口。
要创建本地端口转发,请将-L
选项传递给ssh
客户端:
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f [email protected]
-f选项指示ssh
命令在后台运行,而-N
则不执行远程命令。
远程端口转发
远程端口转发与本地端口转发相反。它将端口从服务器主机转发到客户端主机,然后再转发到目标主机端口。-L
选项告诉ssh
创建远程端口转发:
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f [email protected]
动态端口转发
动态端口转发创建了 SOCKS代理服务器,该服务器允许跨一系列端口进行通信。
要创建动态端口转发(SOCKS),请将-D
选项传递给ssh客户端:
ssh -D [LOCAL_IP:]LOCAL_PORT -N -f [email protected]
有关更多详细信息和逐步说明,请查看如何设置SSH隧道(端口转发)中的文章。
结论
要通过SSH连接到远程服务器,请使用ssh
命令,后跟远程用户名和主机名(ssh [email protected]
)。
知道如何使用ssh
命令对于管理远程服务器至关重要。
如有任何疑问,请在下面发表评论。
以上是 如何使用SSH命令连接到远程主机 的全部内容, 来源链接: utcz.com/z/507417.html