Ubuntu SSH命令行使用技巧有哪些

2025-05-06 20

在 Ubuntu 中使用 SSH 命令行时,以下是一些实用技巧和进阶操作,能提升效率并增强安全性:


一、基础操作

  1. 快速连接远程主机

    ssh username@remote_host  # 默认使用 22 端口
    ssh -p 2222 username@remote_host  # 指定端口
    
  2. 生成 SSH 密钥对

    ssh-keygen -t ed25519  # 推荐 ed25519 算法(更安全)
    ssh-keygen -t rsa -b 4096  # RSA 算法(兼容性更好)
    
  3. 上传公钥到远程主机

    ssh-copy-id -i ~/.ssh/id_ed25519.pub username@remote_host  # 自动添加公钥到远程 ~/.ssh/authorized_keys
    ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 username@remote_host  # 指定端口
    

二、高效配置

  1. SSH 配置文件(~/.ssh/config)
    编辑配置文件简化常用连接:

    Host myserver
        HostName 192.168.1.100
        User ubuntu
        Port 2222
        IdentityFile ~/.ssh/id_ed25519  # 指定私钥路径
    

    之后可直接用 ssh myserver 连接。

  2. 复用 SSH 连接(减少登录延迟)
    ~/.ssh/config 中添加:

    Host *
        ControlMaster auto      # 启用连接复用
        ControlPath ~/.ssh/ssh-%r@%h:%p
        ControlPersist 1h       # 保持连接 1 小时
    

三、高级功能

  1. 端口转发

    • 本地转发(访问远程内网服务)
      ssh -L 8080:localhost:80 username@remote_host  # 将远程 80 端口映射到本地 8080
      
    • 远程转发(暴露本地服务到远程)
      ssh -R 3306:localhost:3306 username@remote_host  # 将本地 MySQL 暴露到远程的 3306 端口
      
    • 动态转发(SOCKS 代理)
      ssh -D 1080 username@remote_host  # 通过远程主机建立 SOCKS5 代理(浏览器设置代理为 localhost:1080)
      
  2. 通过跳板机连接内网主机(ProxyJump)

    ssh -J username@jump_host username@internal_host  # 直接跳转
    # 或在配置文件中:
    Host internal_host
        HostName 10.0.0.5
        ProxyJump username@jump_host
    
  3. 执行远程命令并退出

    ssh username@remote_host "ls /var/log"  # 执行命令后返回本地终端
    ssh username@remote_host "sudo systemctl restart nginx"  # 执行需权限的命令
    

四、安全优化

  1. 禁用密码登录(仅允许密钥)
    修改远程主机的 /etc/ssh/sshd_config

    PasswordAuthentication no
    ChallengeResponseAuthentication no
    

    重启服务:

    sudo systemctl restart sshd
    
  2. 限制登录用户和 IP
    sshd_config 中添加:

    AllowUsers ubuntu@192.168.1.*  # 仅允许特定用户和 IP 段登录
    
  3. 使用 Fail2Ban 防暴力破解

    sudo apt install fail2ban  # 自动屏蔽多次登录失败的 IP
    

五、调试与故障排查

  1. 查看详细连接日志

    ssh -vvv username@remote_host  # 显示完整调试信息(适合排查连接问题)
    
  2. 检查密钥指纹

    ssh-keygen -l -f ~/.ssh/id_ed25519.pub  # 查看本地公钥指纹
    ssh-keyscan remote_host  # 获取远程主机公钥指纹(验证合法性)
    

六、其他实用工具

  1. 通过 SSH 传输文件

    scp -P 2222 local_file.txt username@remote_host:/path/  # 上传文件
    scp -r username@remote_host:/remote/folder /local/path  # 递归下载目录
    
  2. 使用 rsync 高效同步

    rsync -avz -e "ssh -p 2222" /local/path username@remote_host:/remote/path
    
  3. 挂载远程目录(sshfs)

    sudo apt install sshfs
    sshfs username@remote_host:/remote/path /local/mount_point  # 挂载为本地目录
    

掌握这些技巧后,你可以更高效、安全地管理远程服务器!

(本文地址:https://www.nzw6.com/9072.html)Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关