菜鸟科技网

SSH登录服务器命令有哪些?

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中为网络服务提供安全的远程登录管理,通过SSH,用户可以安全地登录到远程服务器,执行命令,传输文件等操作,以下是关于SSH登录服务器的详细命令介绍,包括基本用法、常见参数、高级配置以及安全最佳实践等内容。

SSH登录服务器命令有哪些?-图1
(图片来源网络,侵删)

SSH登录的基本命令

SSH登录的基本命令格式如下:

ssh [用户名]@[服务器IP或域名] -p [端口号]

以用户root的身份登录到IP地址为168.1.100的服务器,默认端口为22:

ssh root@192.168.1.100

如果服务器使用了非标准的SSH端口(例如2222),则需要通过-p参数指定:

ssh root@192.168.1.100 -p 2222

执行命令后,系统会提示输入用户密码,输入正确密码后即可登录到服务器。

SSH登录服务器命令有哪些?-图2
(图片来源网络,侵删)

SSH命令的常见参数

SSH命令支持多种参数,用于优化连接或启用特定功能,以下是常用参数及其说明:

参数 说明 示例
-p 指定SSH服务端口 ssh -p 2222 user@host
-i 指定私钥文件路径 ssh -i ~/.ssh/id_rsa user@host
-l 指定登录用户名(可替代user@host中的用户名) ssh -l root 192.168.1.100
-v 详细模式,显示调试信息 ssh -v user@host
-q 静默模式,不显示警告和诊断信息 ssh -q user@host
-C 启用压缩(适用于低速网络) ssh -C user@host
-X 启用X11转发,允许在本地运行远程图形界面程序 ssh -X user@host
-Y 启用受信任的X11转发(权限更高) ssh -Y user@host
-N 不执行远程命令,仅用于端口转发 ssh -N -L 8080:localhost:80 user@host
-f 后台运行SSH命令(常与-N结合使用) ssh -f -N -L 8080:localhost:80 user@host

SSH密钥登录(免密码登录)

为了提高安全性和便利性,建议使用SSH密钥对进行免密码登录,以下是配置步骤:

生成SSH密钥对

在本地终端执行以下命令生成RSA密钥对(默认长度为2048位,推荐使用4096位):

ssh-keygen -t rsa -b 4096

执行过程中会提示输入密钥保存路径(默认为~/.ssh/id_rsa)和密码(可选,用于加密私钥),生成后,会在~/.ssh/目录下得到id_rsa(私钥)和id_rsa.pub(公钥)。

SSH登录服务器命令有哪些?-图3
(图片来源网络,侵删)

将公钥复制到服务器

使用ssh-copy-id命令将公钥复制到服务器的~/.ssh/authorized_keys文件中:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.100

如果SSH端口非默认,需添加-p参数:

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 user@192.168.1.100

执行后需输入服务器密码,公钥将自动追加到authorized_keys文件中。

测试免密码登录

ssh user@192.168.1.100

若无需输入密码即可登录,则配置成功。

SSH高级配置

配置文件

SSH的全局配置文件为/etc/ssh/ssh_config,用户级配置文件为~/.ssh/config,通过修改用户级配置文件可以为特定主机设置别名或默认参数。

Host server1
    HostName 192.168.1.100
    User root
    Port 2222
    IdentityFile ~/.ssh/id_rsa

配置后可直接通过别名登录:

ssh server1

端口转发

SSH支持三种端口转发方式:

  • 本地转发:将本地端口映射到远程端口
    ssh -L 8080:localhost:80 user@remote_host
  • 远程转发:将远程端口映射到本地端口
    ssh -R 8080:localhost:80 user@remote_host
  • 动态转发:创建SOCKS代理
    ssh -D 1080 user@remote_host

多因素认证(MFA)

结合SSH和Google Authenticator等工具可实现MFA,需在服务器上安装libpam-google-authenticator并配置PAM模块。

安全最佳实践

  1. 禁用密码登录:在服务器的/etc/ssh/sshd_config中设置PasswordAuthentication no,仅允许密钥登录。
  2. 更改默认端口:将Port 22改为非标准端口(如2222),减少自动化攻击风险。
  3. 限制登录用户:在sshd_config中设置AllowUsersAllowGroups白名单。
  4. 定期更新密钥:定期轮换SSH密钥对。
  5. 使用防火墙:通过iptables或ufw限制SSH访问IP。

常见问题解决

  1. “Permission denied (publickey,password)”错误
    检查公钥是否正确添加到authorized_keys,文件权限是否为600chmod 600 ~/.ssh/authorized_keys),或尝试指定私钥路径(ssh -i /path/to/private_key user@host)。

  2. “Connection timed out”错误
    检查服务器防火墙是否允许SSH端口(如ufw allow 2222/tcp),确认服务器SSH服务是否运行(systemctl status sshd)。


相关问答FAQs

Q1: 如何修改SSH服务的默认端口?
A1: 编辑服务器的/etc/ssh/sshd_config文件,找到Port 22行,将其修改为所需端口(如Port 2222),保存后重启SSH服务:systemctl restart sshd,同时确保防火墙允许新端口的访问。

Q2: 忘记SSH私钥密码怎么办?
A2: SSH私钥密码用于加密私钥文件,若忘记密码且未设置备份,则无法恢复,建议提前使用ssh-keygen-o参数(OpenSSH格式)或-m PEM参数导出密钥,并妥善保管密码,若为紧急情况,可重新生成密钥对并重新配置服务器上的公钥。

分享:
扫描分享到社交APP
上一篇
下一篇