SSH全称Secure Shell,是用于客户端和服务器之间的加密连接的加密网络协议。
ssh客户端可用于创建到远程计算机(SSH服务器)安全连接。加密的连接可用于在服务器上执行命令,创建隧道,端口转发等。
有许多可用的SSH客户端包括免费和商业的,其中OpenSSH是使用最广泛使用的客户端。它在所有主要平台上都可用,包括Linux,OpenBSD,Windows,macOS等。
在教程中,我们将说明如何使用OpenSSH ssh
命令登录到远程计算机并运行命令或执行其他操作。
OpenSSH客户端程序是ssh
命令,可以从终端调用。OpenSSH客户端软件包还提供了与ssh
命令一起安装的其他SSH工具,例如scp
和sftp
。
默认情况下,大多数Linux发行版上都预装OpenSSH客户端。如果您的系统未安装ssh客户端,则可以使用发行版的软件包管理器进行安装。
对于MacOS用户,MacOS默认安装的OpenSSH客户端。打开终端运行命令ssh --help
。你将会看到ssh命令的帮助。
如果你的计算机系统是基于Debian的Linux发行版,例如Ubunut,Linux mint。可以运行sudo apt update && sudo apt install openssh-client
命令安装ssh
命令行客户端。
如果你的计算机系统是基于Redhat的Linux发行版,例如CentOS,Fedora。可以运行命令sudo dnf install openssh-clients
安装ssh
命令行客户端。
sudo apt update
sudo apt install openssh-client
sudo dnf install openssh-clients #基于Redhat的发行版
大多数Windows用户都在使用Putty通过SSH连接到远程计算机。但是,Windows 10的最新版本包含OpenSSH客户端和SSH服务器。
这Putty和都OpenSSH可以通过GUI或PowerShell安装。如果要使用PowerShell安装OpenSSH客户端,你需要先找到OpenSSH的确切名称。
然后运行命令Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
安装ssh。
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : 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
ssh命令
要连接到远程计算机,你的远程计算机上运行SSH服务器。必须在远程计算机防火墙中打开SSH端口。必须满足以下要求,才能通过SSH登录到远程计算机。
您必须知道远程计算机的用户名和密码。该用户必须需要具有可登录的shell,才能进行远程登录。
这是ssh
命令的基本语法ssh [OPTIONS] [USER@]:HOST
。USER
是远程计算机已经存在的用户,HOST
可以是域名或者ip地址。
ssh root@myfreax.com
请打开终端或PowerShell,然后运行命令ssh root@myfreax.com
,首次使用SSH连接到远程计算机时,您会看到类似询问是否继续的的消息。
The authenticity of host 'ssh.myfreax.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is。
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 hostsdev@ssh.myfreax.com's password:
输入密码后,您将登录到远程计算机。未提供用户名时,ssh
命令将使用当前系统登录名。
默认情况下,如果未提供任何端口,则SSH客户端将尝试连接到远程服务器的22端口。
在某些服务器,管理员可能已更改默认SSH端口添加一个额外的安全层。通过降低自动攻击的风险来提高服务器的安全性。
要在非默认端口连接到远程计算机,使用-p
选项指定端口。
如果遇到身份验证或连接问题,可以使用-v
选项指示ssh
打印调试消息。要提高详细程度,请使用-vv
或-vvv
。
ssh
命令接受许多选项。有关所有选项的完整列表,请在终端中输入man ssh
,以阅读ssh
手册页。
ssh -p 5522 username@hostname
ssh -v username@hostname
SSH配置文件
如果您每天都通过SSH连接到多个远程系统,则会发现记住所有的远程IP地址,不同的用户名,非标准端口和各种命令行选项非常困难。
OpenSSH客户端在连接时读取在每个用户的配置文件中设置的选项。在此文件中,您可以为所连接的每台远程计算机存储不同的SSH选项。
这一个简单示例配置文件,在配置文件Host
指定要映射远程计算机的别名,这里设置为dev。
HostName
是远程计算机的IP地址或者是可解释的域名。User
指定远程计算机的用户名。Port
远程计算机的SSH服务器端口。
Host dev
HostName dev.myfreax.com
User root
Port 4422
当您在终端运行ssh dev
命令时,将读取~/.ssh/config
文件并使用dev
别名指定的连接信息。创建与远程计算机的连接。
在此示例中,ssh dev
等效ssh -p 4422 root@dev.myfreax.com
。如需要了解更多,请查看关于SSH配置文件的文章。
免密码登录
端口转发
SSH隧道或SSH端口转发是一种在客户端和服务器计算机之间创建加密的SSH连接的方法,通过该连接可以中继服务端口。
SSH端口转发对于使用未加密协议的服务,例如VNC或FTP。访问受地理位置限制的内容或绕过中间防火墙的网络数据很有用。
基本上,您可以转发任何TCP端口并通过SSH建立安全的连接。
结论
要通过SSH连接到远程服务器,请使用ssh
命令,后跟远程用户名和主机名ssh username@hostname
。知道如何使用ssh
命令对于管理远程服务器至关重要。
如有任何疑问,请在下面发表评论。