ssh

SSH命令连接服务器

ssh客户端可用于创建到远程计算机(SSH服务器)安全连接。加密的连接可用于在服务器上执行命令,创建隧道,端口转发等

8 min read
By myfreax
SSH命令连接服务器

SSH全称Secure Shell,是用于客户端和服务器之间的加密连接的加密网络协议。

ssh客户端可用于创建到远程计算机(SSH服务器)安全连接。加密的连接可用于在服务器上执行命令,创建隧道,端口转发等。

有许多可用的SSH客户端包括免费和商业的,其中OpenSSH是使用最广泛使用的客户端。它在所有主要平台上都可用,包括Linux,OpenBSD,Windows,macOS等。

在教程中,我们将说明如何使用OpenSSH ssh命令登录到远程计算机并运行命令或执行其他操作。

OpenSSH客户端程序是ssh命令,可以从终端调用。OpenSSH客户端软件包还提供了与ssh命令一起安装的其他SSH工具,例如scpsftp

默认情况下,大多数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@]:HOSTUSER是远程计算机已经存在的用户,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/config

当您在终端运行ssh dev命令时,将读取~/.ssh/config文件并使用dev别名指定的连接信息。创建与远程计算机的连接。

在此示例中,ssh dev等效ssh -p 4422 root@dev.myfreax.com。如需要了解更多,请查看关于SSH配置文件的文章。

免密码登录

如何在Ubuntu 20.04配置SSH密钥免密登录 | myfreax
SSH全称Secure Shell,是用于在客户端和服务器之间创建安全连接的网络协议。使用SSH 创建隧道tunnels,端口转发等
如何在CentOS 8配置SSH密钥免密登录 | myfreax
基于密码的身份验证和基于公钥的身份验证是最流行的SSH身份验证机制。与传统的密码身份验证相比,使用SSH密钥通常更安全,更方便
如何在Debian 10配置SSH密钥免密登录 | myfreax
SSH的全称是Secure Shell,是用于客户端和服务器之间的加密安全连接的网络协议,并支持各种身份验证机制

端口转发

SSH隧道或SSH端口转发是一种在客户端和服务器计算机之间创建加密的SSH连接的方法,通过该连接可以中继服务端口。

SSH端口转发对于使用未加密协议的服务,例如VNC或FTP。访问受地理位置限制的内容或绕过中间防火墙的网络数据很有用。

基本上,您可以转发任何TCP端口并通过SSH建立安全的连接。

如何设置SSH隧道以及端口转发 | myfreax
SSH隧道或SSH端口转发是一种在客户端和服务器计算机之间创建加密的SSH连接的方法,通过该连接可以中继服务端口

结论

要通过SSH连接到远程服务器,请使用ssh命令,后跟远程用户名和主机名ssh username@hostname。知道如何使用ssh命令对于管理远程服务器至关重要。

如有任何疑问,请在下面发表评论。