要通过SSH连接Linux服务器,首先需要确保服务器已启用SSH服务,大多数Linux发行版默认安装OpenSSH,可通过systemctl status sshd检查服务状态,若未运行则使用systemctl start sshd启动,并设置为开机自启systemctl enable sshd,客户端连接时,需知道服务器的IP地址或域名、SSH端口(默认为22)以及合法的用户名,基本连接命令为ssh username@server_ip,首次连接时会提示保存服务器主机密钥,输入yes即可,若服务器修改了默认端口,需通过-p参数指定,如ssh -p 2222 username@server_ip。

身份验证方式
SSH支持两种主要验证方式:密码验证和密钥对验证,密码验证较为简单,直接输入用户密码即可,但安全性较低,易受暴力破解攻击,密钥对验证更安全,需在客户端生成密钥对(公钥和私钥),并将公钥上传至服务器的~/.ssh/authorized_keys文件中,生成密钥对命令为ssh-keygen -t rsa -b 4096,过程中可设置密码保护私钥,上传公钥可通过ssh-copy-id username@server_ip自动完成,或手动将公钥内容追加至服务器authorized_keys文件,密钥验证时,客户端需指定私钥路径,如ssh -i /path/to/private_key username@server_ip。
连接优化与安全配置
为提升连接效率和安全性,可进行以下配置:
- 修改默认端口:编辑服务器
/etc/ssh/sshd_config文件,将Port 22改为其他端口(如2222),并重启SSH服务systemctl restart sshd。 - 禁用密码登录:在
sshd_config中设置PasswordAuthentication no,强制使用密钥验证,提升安全性。 - 限制登录用户:通过
AllowUsers或AllowGroups指令指定允许登录的用户或用户组,如AllowUsers admin user1。 - 空闲超时设置:添加
ClientAliveInterval 60和ClientAliveCountMax 3,确保连接在无操作60秒后自动断开,最多发送3次保活包。
常用SSH命令与技巧
连接后,可通过以下命令提升操作效率:
- 文件传输:使用
scp(安全复制)命令,如scp -r local_folder username@server_ip:/remote/path上传文件夹,或scp username@server_ip:/remote/file /local/path下载文件。 - 端口转发:通过
ssh -L local_port:remote_host:remote_port username@server_ip建立本地端口转发,将本地流量通过SSH隧道转发至服务器。 - 多路复用:在
~/.ssh/config中配置ControlMaster auto和ControlPath ~/.ssh/master-%r@%h:%p,实现连接复用,减少重复握手时间。
相关问答FAQs
Q1: SSH连接时出现“Permission denied (publickey,password)”错误怎么办?
A: 此错误通常因认证失败导致,首先检查用户名和密码是否正确,或确认公钥是否已正确添加至服务器authorized_keys文件,检查文件权限,确保~/.ssh目录权限为700,authorized_keys文件权限为600,若使用密钥验证,确认私钥路径是否正确,且未被密码保护(或输入正确密码)。

Q2: 如何避免每次SSH连接都输入密码?
A: 可通过SSH代理或密钥对验证解决,生成密钥对后,将公钥上传至服务器,并确保PasswordAuthentication设置为no(需root权限修改sshd_config),可使用ssh-agent管理私钥密码,运行ssh-agent bash后,通过ssh-add /path/to/private_key添加私钥,后续连接无需重复输入密码。

