新闻资讯

如何用SSH远程连接服务器

2025-09-4

SSH(SecureShell)是一种网络协议,用于在不安全的网络环境中为网络服务提供安全的传输通道。它常用于远程管理服务器,能有效加密数据传输,防止信息被窃取或篡改。以下将详细介绍使用SSH远程连接服务器的方法及相关要点。

一、准备工作

1、确认本地SSH客户端安装情况:
-Linux和macOS系统:默认已安装OpenSSH客户端。可在终端中输入ssh-V命令来验证,若显示OpenSSH的版本信息,如OpenSSH_8.9p1,OpenSSL3.0.114Mar2022,则说明已安装。
-Windows系统:有多种方式获取SSH客户端。
-PowerShell(Windows10及以上):从Windows10开始,系统内置了OpenSSH客户端。可在PowerShell中输入ssh-V检查是否已安装。若未安装,可在“设置”-“应用”-“应用和功能”-“可选功能”中,搜索“OpenSSH客户端”进行安装。
-GitBash:安装GitforWindows,安装过程中会包含一个名为GitBash的终端环境,其中集成了SSH命令。安装完成后,打开GitBash即可使用SSH。
-WindowsSubsystemforLinux(WSL):在Windows系统上安装WSL,可获得完整的Linux环境,其中默认包含SSH客户端。安装完成后,可在WSL的终端中使用SSH。
2、获取服务器信息:
-服务器IP地址或域名:这是连接服务器的关键信息,例如192.168.1.100或yourserver.com。若使用云服务器,可在云服务提供商的管理控制台中找到服务器的公网IP地址。
-用户名:用于登录服务器的账号,通常是系统管理员分配的用户名,如admin或ubuntu。
-密码或SSH密钥:如果服务器配置为使用密码验证,需获取对应的登录密码;若采用SSH密钥验证,需确保本地已生成相应的密钥对,且公钥已添加到服务器的authorized_keys文件中。
3、检查服务器SSH服务状态:
-对于Linux服务器,大多数发行版默认安装并启动了OpenSSH服务。可通过以下命令检查服务状态:
-Ubuntu、Debian等基于systemd的系统:运行sudosystemctlstatusssh,若显示active(running),表示SSH服务正在运行;若未运行,可使用sudosystemctlstartssh命令启动服务。
-CentOS6及之前版本:运行servicesshdstatus,若服务未运行,可使用servicesshdstart启动。
-CentOS7及之后版本:与基于systemd的系统类似,使用sudosystemctlstatussshd和sudosystemctlstartsshd来检查和启动服务。

二、使用SSH命令进行连接

1、基本连接语法:
-最常见的连接命令格式为sshusername@server_address,其中username是服务器上的用户名,server_address是服务器的IP地址或域名。例如,要以ubuntu用户连接到IP地址为192.168.1.100的服务器,命令为sshubuntu@192.168.1.100。
-如果服务器使用了非默认的SSH端口(默认端口为22),需要在命令中指定端口号,格式为ssh-pport_numberusername@server_address。例如,服务器的SSH端口为2222,连接命令为ssh-p2222ubuntu@192.168.1.100。
2、首次连接:
-当首次连接到一台服务器时,系统会提示服务器的指纹信息,并询问是否继续连接。例如:
Theauthenticityofhost'192.168.1.100(192.168.1.100)'can'tbeestablished.
ED25519keyfingerprintisSHA256:xxxxxxxxx.
Thiskeyisnotknownbyanyothernames
Areyousureyouwanttocontinueconnecting(yes/no/[fingerprint])?
-这是SSH为防止中间人攻击的安全机制。仔细核对服务器的指纹信息(可通过与服务器管理员确认等方式),若确认无误,输入yes并回车,系统会将服务器的公钥添加到本地的known_hosts文件中,之后再次连接时将不再提示此信息。
3、密码验证:
-输入yes后,系统会提示输入用户密码。在光标处输入密码,输入过程中密码不会显示在屏幕上,输入完成后回车。若密码正确,即可成功登录到服务器,进入服务器的命令行界面。
4、SSH密钥验证:
-生成密钥对:在本地终端中运行ssh-keygen命令来生成SSH密钥对。通常会提示选择密钥保存路径和设置密码(可留空不设置密码,但不设置密码安全性相对较低)。例如:
$ssh-keygen
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/user/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
Entersamepassphraseagain:
Youridentificationhasbeensavedin/home/user/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/home/user/.ssh/id_rsa.pub.
Thekeyfingerprintis:
SHA256:xxxxxxxxxuser@your_local_host
Thekey'srandomartimageis:
+---[RSA3072]----+
|.o.|
|o.+.|
|.++.|
|oo.+.|
|+oS=o|
|oo.+B.|
|o.=o.|
|+o.|
|o.|
+----[SHA256]-----+
-上传公钥到服务器:生成密钥对后,需将公钥(id_rsa.pub文件)内容添加到服务器的authorized_keys文件中。有多种方法实现,例如:
-使用ssh-copy-id命令:在本地运行ssh-copy-idusername@server_address,该命令会自动将本地的公钥复制到服务器的authorized_keys文件中。运行此命令时,可能需要输入服务器的密码进行验证。
-手动添加:先在本地查看公钥内容,使用cat~/.ssh/id_rsa.pub命令,复制公钥内容。然后登录到服务器,在服务器上创建或编辑~/.ssh/authorized_keys文件(若~/.ssh目录不存在,需先创建,使用mkdir-p~/.ssh命令),将复制的公钥内容粘贴到authorized_keys文件中,保存并关闭文件。注意,~/.ssh目录权限应为700,authorized_keys文件权限应为600或644,以确保安全性。
-使用密钥连接:完成公钥上传后,再次连接服务器时,系统会尝试使用密钥进行验证。若密钥匹配,无需输入密码即可直接登录到服务器。如果密钥保存在非默认路径,连接时需使用-i参数指定密钥文件路径,例如ssh-i/path/to/your/id_rsausername@server_address。

三、使用SSH客户端工具(以Windows为例)

1、PuTTY:
-下载和安装:从PuTTY官方网站(https://www.putty.org/)下载PuTTY安装程序,运行安装程序并按照提示完成安装
-配置连接:
打开PuTTY,在“HostName(orIPaddress)”字段中输入服务器的IP地址或域名。
在“Port”字段中输入SSH端口号,默认为22。
在“Connectiontype”中选择“SSH”。
若要使用SSH密钥登录,在左侧菜单中选择“Connection”-“SSH”-“Auth”,点击“Browse...”按钮,选择对应的私钥文件(.ppk格式,若使用OpenSSH生成的密钥,需使用PuTTYgen工具进行格式转换)。
点击“Open”按钮,若使用密码验证,会提示输入用户名和密码;若使用密钥验证且配置正确,将直接登录到服务器。
2、Xshell:
-下载和安装:可从Xshell官方网站下载安装程序,有免费试用版可供个人使用。运行安装程序,按照提示完成安装。
-配置连接:
打开Xshell,点击“新建”按钮创建一个新的会话。
在“名称”字段中输入会话名称,方便识别。
在“主机”字段中输入服务器的IP地址或域名。
在“端口号”字段中输入SSH端口号,默认为22。
点击“用户身份验证”选项卡,在“方法”下拉菜单中选择“Password”(密码验证)或“PublicKey”(公钥验证)。若选择密码验证,输入用户名和密码;若选择公钥验证,配置对应的私钥文件路径。
点击“确定”保存设置,然后在会话列表中选择创建的会话,点击“连接”按钮即可连接到服务器。

四、常见问题及解决方法

1、连接被拒绝(Connectionrefused):
-原因:可能是服务器的SSH服务未运行、防火墙阻止了SSH连接、网络故障或服务器端口配置错误等。
-解决方法:首先检查服务器的SSH服务状态,按前文所述方法启动SSH服务。检查服务器和本地的防火墙设置,确保允许SSH端口(默认22)的入站和出站连接。例如,在Linux服务器上,若使用iptables防火墙,可添加规则iptables-AINPUT-ptcp--dport22-jACCEPT允许SSH连接;若使用firewalld防火墙,可运行firewall-cmd--zone=public--add-port=22/tcp--permanent命令并重新加载防火墙规则firewall-cmd--reload。同时,使用ping命令检查网络连通性,如pingserver_address,若无法ping通,排查网络故障。
2、无法验证服务器身份(Hostkeyverificationfailed):
-原因:可能是服务器的公钥在本地known_hosts文件中的记录被篡改,或者更换了服务器的SSH密钥。
-解决方法:在本地终端中,使用ssh-keygen-Rserver_address命令删除本地known_hosts文件中对应服务器的记录,然后重新连接服务器,再次接受服务器的公钥。注意,此操作应谨慎进行,确保连接的服务器是可信任的,防止中间人攻击。
3、权限不足(Permissiondenied):
-原因:输入的用户名或密码错误,或者用户在服务器上没有足够的权限进行SSH登录。
-解决方法:仔细检查用户名和密码是否正确,确保输入无误。若密码正确但仍提示权限不足,联系服务器管理员确认用户权限,可能需要将用户添加到允许SSH登录的组中,如在Linux系统中,确保用户属于ssh组或其他具有SSH登录权限的组。
通过以上步骤和方法,你应该能够顺利使用SSH远程连接到服务器。在实际应用中,需注意网络安全,合理设置密码和SSH密钥,定期更新服务器和客户端软件,以保障远程连接的安全性和稳定性。


拓展阅读

1、如何在SSH连接中使用代理?:在本地~/.ssh/config文件中配置代理信息。例如,若使用HTTP代理,可添加ProxyCommandnc-Xconnect-xproxy_host:proxy_port%h%p,其中proxy_host和proxy_port为代理服务器的地址和端口,%h和%p分别表示目标服务器的地址和端口。也可在连接命令中使用-oProxyCommand参数指定代理,如ssh-oProxyCommand="nc-Xconnect-xproxy_host:proxy_port%h%p"username@server_address。
2、如何在SSH会话中保持连接活跃?:在本地~/.ssh/config文件中添加ServerAliveInterval和ServerAliveCountMax配置项。ServerAliveInterval指定客户端向服务器发送心跳包的时间间隔(单位为秒),如ServerAliveInterval60表示每60秒发送一次心跳包;ServerAliveCountMax指定客户端在认定连接已断开前允许发送心跳包失败的次数,如ServerAliveCountMax3表示连续3次心跳包发送失败后认定连接断开。在服务器端的/etc/ssh/sshd_config文件中,也可设置ClientAliveInterval和ClientAliveCountMax来控制服务器向客户端发送心跳包的行为。
3、SSH与Telnet有何区别?:SSH是安全的远程连接协议,使用加密技术保护数据传输,防止信息被窃取或篡改,默认端口为22;而Telnet是一种不安全的远程连接协议,数据以明文形式传输,易被截获和篡改,默认端口为23。在安全性要求较高的场景下,应优先使用SSH进行远程连接,避免使用Telnet。

上一篇: 在外网怎么访问ftp服务器 下一篇:
新闻资讯
热门专题
最新专题
友情链接