基础连接:开启远程管理之门
在开始之前,请确保您已具备以下前提条件:
- 一台已启动并连接到网络的CentOS 7服务器。
- 服务器的IP地址或域名。
- 一个具有登录权限的用户账户(默认通常是
root
,但更推荐使用普通用户)。 - 一台客户端计算机(Windows、macOS或Linux),并装有SSH客户端,Windows 10/11已内置OpenSSH客户端,macOS和Linux则通常默认安装。
执行基本连接命令
SSH连接的基础命令格式非常简洁,打开您的客户端终端(或Windows的PowerShell/CMD),输入以下命令:
ssh username@server_ip
ssh
:启动SSH客户端程序。username
:您在CentOS 7服务器上用于登录的用户名。server_ip
:您CentOS 7服务器的IP地址。
如果您的用户名是admin
,服务器IP是168.1.100
,命令则为:
ssh admin@192.168.1.100
首次连接与主机密钥验证
当您第一次连接到某台服务器时,SSH客户端会显示如下提示:
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdef.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
这是SSH的安全机制之一,它告诉您,客户端不认识这台主机的“身份”(即主机密钥),并显示其指纹(fingerprint),一个独一无二的标识符,您需要确认这就是您想要连接的服务器,输入yes
并回车后,客户端会将这台主机的密钥保存到本地的~/.ssh/known_hosts
文件中,此后再连接时,就不会出现此提示,除非服务器的密钥发生了变化。
指定非标准端口
出于安全考虑,很多管理员会将SSH服务从默认的22端口更改为其他端口,您需要使用-p
参数来指定端口号:
ssh -p 2222 username@server_ip
这个命令尝试通过2222端口连接到服务器。
高级连接方式与实用技巧
掌握了基础连接后,我们可以探索一些更强大、更便捷的SSH用法。
基于密钥的认证(免密登录)
密码认证虽然简单,但容易受到暴力破解攻击,基于密钥的认证则安全得多,它使用一对加密密钥(私钥和公钥)来进行身份验证。
步骤如下:
在客户端生成密钥对:
在您的客户端计算机上运行以下命令:ssh-keygen -t rsa -b 4096
系统会提示您指定密钥文件的保存位置(默认为
~/.ssh/id_rsa
)和设置一个 passphrase(密码短语)。 passphrase可以为私钥增加一层额外的保护,如果设置为空,则可以实现完全免密登录。将公钥复制到服务器:
生成密钥对后,您需要将公钥(id_rsa.pub
添加到CentOS 7服务器上对应用户的~/.ssh/authorized_keys
文件中,最简便的方法是使用ssh-copy-id
命令:ssh-copy-id username@server_ip
该命令会自动处理文件权限和内容追加,完成后您就可以直接使用
ssh username@server_ip
登录,而无需输入密码。
使用SSH配置文件简化连接
如果您需要管理多台服务器,每次都输入一长串命令和参数会很繁琐,SSH客户端允许您通过~/.ssh/config
文件为常用连接创建别名。
创建或编辑该文件(nano ~/.ssh/config
),并添加如下内容:
Host my-web-server
HostName 192.168.1.100
User admin
Port 2222
IdentityFile ~/.ssh/my_custom_key
Host my-db-server
HostName db.example.com
User dba
保存后,您就可以直接使用ssh my-web-server
来连接第一台服务器,所有参数都会自动匹配,这极大地提升了工作效率。
安全最佳实践:加固您的SSH服务
连接安全是服务器安全的第一道防线。
禁用密码认证
在成功设置基于密钥的认证并确保可以正常登录后,强烈建议在服务器上禁用密码认证。
编辑服务器上的SSH配置文件:
sudo vi /etc/ssh/sshd_config
找到并修改以下行:
PasswordAuthentication no
保存文件后,重启SSH服务使配置生效:
sudo systemctl restart sshd
警告: 在执行此步骤前,请务必确认您的密钥登录功能完好,否则您可能会将自己锁在服务器之外。
禁止root用户直接登录
允许root
用户直接通过SSH登录是一个巨大的安全风险,攻击者一旦破解root
密码,就获得了服务器的最高权限,最佳实践是使用普通用户登录,然后通过sudo
提权。
同样在/etc/ssh/sshd_config
文件中,修改:
PermitRootLogin no
重启sshd
服务后,root
用户将无法直接SSH登录。
常见问题与故障排除
错误信息 | 可能原因 | 解决方案 |
---|---|---|
Connection refused | SSH服务未启动;防火墙阻止了连接;端口号错误。 | 在服务器上检查systemctl status sshd ;检查firewall-cmd --list-all ;确认连接命令中的端口号是否正确。 |
Permission denied (publickey) | 公钥未正确上传到服务器;服务器上的~/.ssh/authorized_keys 文件权限不正确。 | 使用ssh-copy-id 重新上传公钥;确保服务器上~/.ssh 目录权限为700,authorized_keys 文件权限为600。 |
Host key verification failed | 服务器的SSH主机密钥已更改(例如重装了系统)。 | 在客户端删除~/.ssh/known_hosts 文件中对应旧的主机条目,然后重新连接。 |
相关问答FAQs
Q1: 如何安全地断开SSH连接?
A1: 断开SSH连接非常简单,您可以在远程服务器的终端中输入以下任意一个命令:exit
、logout
,或者使用快捷键 Ctrl+D
,执行后,SSH会话会终止,您将返回到本地计算机的终端。
Q2: 除了命令行操作,我可以通过SSH传输文件吗?
A2: 当然可以,SSH协议本身就支持安全的文件传输,最常用的两个工具是 scp
(Secure Copy) 和 sftp
(SSH File Transfer Protocol)。
:语法类似于 cp
,将本地文件file.txt
复制到服务器的/home/admin/
目录:scp file.txt admin@server_ip:/home/admin/
:它提供了一个交互式的文件传输界面,类似于传统的 ftp
,连接后,您可以使用get
、put
、ls
、cd
等命令来浏览和传输文件。sftp admin@server_ip
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复