温馨提示×

ubuntu ssh命令行操作指南

小樊
41
2025-11-02 08:31:56
栏目: 智能运维

Ubuntu SSH命令行操作指南

一、SSH基础准备

1. 安装SSH客户端与服务器

Ubuntu系统默认安装了OpenSSH客户端openssh-client),无需额外安装即可连接远程服务器。若需在本地Ubuntu上搭建SSH服务器(供其他设备连接),需安装openssh-server

sudo apt update
sudo apt install openssh-server  # 安装SSH服务器
sudo systemctl start ssh         # 启动SSH服务
sudo systemctl enable ssh        # 设置开机自启

通过sudo systemctl status ssh可查看服务运行状态(显示active (running)表示正常)。

2. 连接到远程服务器

使用ssh命令连接远程服务器,基本语法为:

ssh username@hostname_or_ip_address
  • username:远程服务器上的用户名(如rootubuntu);
  • hostname_or_ip_address:远程服务器的IP地址或域名(如192.168.1.100example.com)。
    首次连接时,系统会提示确认远程服务器的指纹(输入yes确认),随后要求输入远程用户的密码。

二、常用功能操作

1. 密钥认证(免密登录)

为避免每次连接都输入密码,可使用SSH密钥对认证:

  • 生成密钥对:在本地Ubuntu运行ssh-keygen,按提示选择密钥保存路径(默认~/.ssh/id_rsa)和设置密码(可选):
    ssh-keygen -t rsa -b 4096  # 生成RSA密钥对(4096位强度)
    
  • 复制公钥到远程服务器:使用ssh-copy-id命令将公钥(~/.ssh/id_rsa.pub)自动复制到远程服务器的~/.ssh/authorized_keys文件中:
    ssh-copy-id username@hostname_or_ip_address
    

此后,连接时无需输入密码(仅需输入本地私钥的密码,若设置了的话)。

2. 指定端口连接

SSH默认使用22端口,若远程服务器修改了SSH端口(如2222),需通过-p参数指定:

ssh -p 2222 username@hostname_or_ip_address

3. 执行远程命令

无需登录远程服务器即可在本地执行远程命令,语法为:

ssh username@hostname_or_ip_address 'command'

示例:查看远程服务器的磁盘使用情况:

ssh user@192.168.1.100 'df -h'

4. 断开SSH连接

在SSH会话中,输入exit或按Ctrl+D即可断开连接。

三、高级功能操作

1. SSH配置文件(简化连接)

编辑本地~/.ssh/config文件(若不存在则创建),可为常用服务器配置别名、端口、密钥等参数,减少重复输入:

nano ~/.ssh/config

添加以下内容(以myserver为例):

Host myserver
    HostName 192.168.1.100       # 远程服务器IP或域名
    User ubuntu                  # 远程服务器用户名
    Port 2222                    # SSH端口(默认22可省略)
    IdentityFile ~/.ssh/id_rsa   # 私钥文件路径

保存后,直接通过别名连接:

ssh myserver

2. SSH隧道(端口转发)

SSH隧道可实现本地端口与远程端口映射,常用于安全访问远程服务:

  • 本地端口转发:将本地端口(如8080)的请求转发到远程服务器的80端口(如访问远程Web服务):
    ssh -L 8080:localhost:80 username@hostname_or_ip_address
    
    此时,本地浏览器访问http://localhost:8080即等同于访问远程服务器的http://localhost:80
  • 远程端口转发:将远程服务器端口(如8080)的请求转发到本地的80端口(如将远程服务器暴露给外部访问):
    ssh -R 8080:localhost:80 username@hostname_or_ip_address
    
  • 动态端口转发(SOCKS代理):创建SOCKS5代理,用于加密所有通过该代理的网络流量(如访问远程内网资源):
    ssh -D 1080 username@hostname_or_ip_address
    
    配置浏览器或系统代理为SOCKS5,地址localhost,端口1080即可。

3. 文件传输

(1)SCP(Secure Copy Protocol)

用于本地与远程服务器之间的文件复制

  • 从本地复制到远程:
    scp /path/to/local/file username@hostname_or_ip_address:/path/to/remote/destination
    
  • 从远程复制到本地:
    scp username@hostname_or_ip_address:/path/to/remote/file /path/to/local/destination
    

示例:将本地的document.txt复制到远程服务器的~/Documents目录:

scp document.txt user@192.168.1.100:~/Documents/

(2)SFTP(SSH File Transfer Protocol)

用于交互式文件传输(类似FTP,但更安全):

sftp username@hostname_or_ip_address

进入SFTP会话后,常用命令:

  • get remote_file local_file:下载远程文件到本地;
  • put local_file remote_file:上传本地文件到远程;
  • ls:查看远程目录内容;
  • cd:切换远程目录;
  • exit:退出SFTP会话。

四、安全性增强

1. 更改SSH默认端口

编辑远程服务器的/etc/ssh/sshd_config文件,修改Port参数(如改为2222):

sudo nano /etc/ssh/sshd_config

找到#Port 22,修改为Port 2222,保存后重启SSH服务:

sudo systemctl restart ssh

注意:修改端口后,连接时需通过-p参数指定新端口。

2. 禁用root登录

编辑/etc/ssh/sshd_config文件,找到PermitRootLogin参数,修改为no

sudo nano /etc/ssh/sshd_config

#PermitRootLogin prohibit-password改为PermitRootLogin no,保存后重启SSH服务。

3. 使用防火墙限制访问

使用ufw(Uncomplicated Firewall)限制仅特定IP地址可访问SSH端口(如222222):

sudo ufw allow from 192.168.1.100 to any port 22  # 仅允许192.168.1.100访问22端口
sudo ufw enable                                  # 启用防火墙

五、监控与日志

1. 查看SSH连接日志

通过journalctl命令查看SSH服务的实时日志(用于排查连接问题):

sudo tail -f /var/log/auth.log  # Ubuntu系统日志路径

2. 查看SSH端口监听状态

使用ssnetstat命令查看SSH服务是否在监听指定端口:

sudo ss -tulnp | grep sshd  # 推荐(更简洁)
# 或
sudo netstat -tulnp | grep sshd

通过以上操作,可在Ubuntu系统中高效使用SSH进行远程连接、文件传输及服务器管理。

0