Linux SSH远程连接如何正确使用?

SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中为网络服务提供安全的传输环境,广泛应用于Linux系统的远程管理、文件传输等场景,通过SSH,用户可以以加密的方式远程登录服务器、执行命令、传输文件,相比传统的Telnet等协议,SSH能有效防止信息泄露和中间人攻击,本文将详细介绍SSH的使用方法,包括客户端连接、服务器配置、密钥认证、常用命令及安全优化等内容。

linux ssh 如何使用

SSH客户端连接基础使用

SSH客户端是用户发起连接的工具,Linux系统通常默认安装OpenSSH客户端,Windows系统可通过PuTTY、Xshell等工具使用SSH,本文以Linux命令行客户端为例,介绍基本连接方法。

基本远程登录

通过ssh命令可以远程登录到SSH服务器,基本语法为:

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

用户名是目标服务器上的合法用户(如root、普通用户等),服务器IP地址或域名是目标服务器的网络标识,-p用于指定非默认的SSH端口(默认端口为22)。

示例

  • admin用户登录IP为168.1.100的服务器(默认端口22):
    ssh admin@192.168.1.100
  • 登录时指定自定义端口(如2222):
    ssh admin@192.168.1.100 -p 2222

首次连接时,系统会提示服务器的SSH密钥指纹(用于验证服务器身份),输入yes确认后即可建立连接,随后需输入服务器上该用户的密码完成登录。

客户端连接方式对比

连接方式 适用场景 优点 缺点
命令行ssh Linux/macOS系统,快速操作 无需额外安装,脚本友好 无图形界面,功能相对单一
图形化工具(如Xshell、PuTTY) Windows系统,需图形界面 支持多标签、会话保存、可视化操作 需额外安装,Windows默认不提供
终端模拟器(如iTerm2) macOS系统,高级用户 支持分屏、快捷键、主题定制 仅限macOS系统

SSH服务器配置(以Linux为例)

若要作为SSH服务器提供服务,需安装并配置OpenSSH服务器软件(通常为openssh-server)。

安装SSH服务器

  • Ubuntu/Debian系统
    sudo apt update && sudo apt install openssh-server
  • CentOS/RHEL系统
    sudo yum install openssh-server

安装完成后,SSH服务会自动启动(可通过systemctl status sshd检查状态),若未启动,使用sudo systemctl start sshd启动,并设置开机自启(sudo systemctl enable sshd)。

配置SSH服务

SSH服务的主配置文件为/etc/ssh/sshd_config,通过修改此文件可调整服务器行为,常用配置参数如下:

参数 作用 推荐值
Port 指定SSH监听端口 非默认端口(如2222),避免默认端口22被暴力破解
PermitRootLogin 是否允许root用户直接登录 no(禁止root直接登录,提升安全性)
PasswordAuthentication 是否允许密码认证 no(仅密钥认证,更安全)或yes(兼容密码登录)
PubkeyAuthentication 是否允许公钥认证 yes(推荐开启,结合密钥使用)
AllowUsers 允许登录的用户列表(空表表示所有用户) admin,user1(仅允许指定用户登录)
MaxAuthTries 最大认证尝试次数 3(防止暴力破解)

修改配置示例

  1. 禁用root直接登录,修改端口为2222:
    sudo sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
    sudo sed -i 's/^Port 22/Port 2222/' /etc/ssh/sshd_config
  2. 限制仅adminuser1用户登录:
    echo "AllowUsers admin user1" | sudo tee -a /etc/ssh/sshd_config

配置修改后,需重启SSH服务使生效:

sudo systemctl restart sshd

SSH密钥认证(免密登录)

密码认证存在暴力破解风险,推荐使用SSH密钥认证(公钥/私钥对)实现免密登录,提升安全性。

linux ssh 如何使用

生成SSH密钥对

在客户端机器上执行ssh-keygen生成密钥对(默认存放在~/.ssh/目录):

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa:指定密钥类型为RSA(也可用ed25519等更安全的算法);
  • -b 4096:密钥长度为4096位(越长越安全);
  • -C:注释字段,可填写邮箱或标识信息(便于区分密钥)。

执行过程中会提示输入私钥密码(可选,用于保护私钥文件,若不输入则为空密码),最终生成id_rsa(私钥,需保密)和id_rsa.pub(公钥,可公开)。

上传公钥到服务器

将客户端的公钥内容追加到服务器目标用户的~/.ssh/authorized_keys文件中:

  • 方法1:使用ssh-copy-id命令(推荐)

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

    执行后会提示输入服务器用户密码,成功后公钥会自动添加到服务器~/.ssh/authorized_keys

  • 方法2:手动上传

    1. 在客户端复制公钥内容:
      cat ~/.ssh/id_rsa.pub
    2. 登录服务器,创建~/.ssh目录(若不存在)并设置权限:
      mkdir -p ~/.ssh && chmod 700 ~/.ssh
    3. 追加到authorized_keys文件:
      echo "客户端公钥内容" >> ~/.ssh/authorized_keys
      chmod 600 ~/.ssh/authorized_keys

测试免密登录

完成公钥上传后,再次执行ssh命令即可免密登录:

ssh admin@192.168.1.100 -p 2222

SSH常用高级命令

SSH除远程登录外,还支持文件传输、端口转发等功能,提升工作效率。

文件传输

  • scp(Secure Copy):加密复制文件/目录,语法为:

    scp [选项] 本地文件/目录 用户@服务器:远程路径

    示例

    • 本地文件test.txt上传到服务器/home/admin/
      scp test.txt admin@192.168.1.100:/home/admin/
    • 下载服务器/home/admin/data.zip到本地当前目录:
      scp admin@192.168.1.100:/home/admin/data.zip ./
    • 传输整个目录(需加-r参数):
      scp -r local_dir admin@192.168.1.100:/home/admin/
  • sftp(SSH File Transfer Protocol):交互式文件传输,类似FTP但加密,执行sftp admin@192.168.1.100后进入交互界面,常用命令包括put(上传)、get(下载)、ls(列表)、cd(切换目录)等。

    linux ssh 如何使用

端口转发

SSH可通过隧道转发端口,实现安全访问内网服务或绕过防火墙限制。

  • 本地端口转发:将本地端口映射到远程服务器端口(如访问本地8080端口,实际转发到远程服务器的80端口):

    ssh -L 8080:localhost:80 admin@192.168.1.100

    执行后,本地访问http://localhost:8080即等同于访问远程服务器的http://localhost:80

  • 远程端口转发:将远程服务器端口映射到本地端口(适用于内网服务器通过外网SSH服务器暴露服务):

    ssh -R 8080:localhost:80 admin@192.168.1.100

    执行后,远程服务器可通过localhost:8080访问本地80端口服务。

SSH安全优化建议

为提升SSH服务安全性,建议采取以下措施:

  1. 禁用密码认证:仅启用密钥认证(PasswordAuthentication no),避免暴力破解;
  2. 修改默认端口:将Port改为非2222的高位端口(如22222),减少自动化攻击扫描;
  3. 使用fail2ban:安装fail2ban工具,监控SSH登录失败日志,自动封禁恶意IP;
  4. 限制登录用户:通过AllowUsersDenyUsers参数限制允许登录的用户;
  5. 定期更新SSH软件:通过系统包管理器更新openssh-server至最新版本,修复安全漏洞;
  6. 禁用空密码账户:确保服务器所有用户均设置复杂密码(若未禁用密码认证)。

相关问答FAQs

Q1: SSH连接时提示“Permission denied (publickey,password)”怎么办?
A: 通常是因为认证方式配置问题或密钥未正确上传,解决步骤:

  1. 检查服务器/etc/ssh/sshd_configPasswordAuthenticationPubkeyAuthentication是否至少有一个为yes(若仅用密钥认证,确保PubkeyAuthentication yes);
  2. 确认客户端公钥是否已上传到服务器~/.ssh/authorized_keys,并检查文件权限(600)和目录权限(700);
  3. 若使用密钥认证,确保客户端指定了正确的私钥文件(ssh -i ~/.ssh/id_rsa admin@...)。

Q2: 如何查看SSH服务的连接日志和登录历史?
A:

  1. SSH服务日志:默认位于/var/log/auth.log(Ubuntu/Debian)或/var/log/secure(CentOS/RHEL),记录登录成功/失败信息,可通过grep "sshd" /var/log/auth.log查看;
  2. 用户登录历史:服务器用户可通过last命令查看本机登录记录(包括SSH登录),或检查~/.ssh/authorized_keys文件修改时间(判断是否有异常公钥添加)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/17426.html

(0)
酷番叔酷番叔
上一篇 2小时前
下一篇 2小时前

相关推荐

  • Linux文件夹复制如何避免出错?

    核心命令:cp(推荐基础场景)cp(copy)是Linux最基础的复制命令,通过添加递归参数实现文件夹复制:cp -r 源文件夹路径 目标路径-r(或-R、–recursive):递归复制目录及其子内容(必需参数),示例:将/home/user/docs复制到/backup目录 cp -r /home/use……

    2025年7月8日
    2800
  • 月入过万的副业真的靠谱吗?

    简答:本文探讨了人工智能在医疗诊断中的应用潜力,分析了其提升效率与准确性的优势;同时指出数据隐私、算法偏见等关键挑战;最后强调需建立严格监管与伦理框架以实现其安全、公平发展。

    2025年6月18日
    2800
  • 如何快速提升网站流量?

    在Linux系统中,“卸载网卡”通常指从内核中移除网卡驱动模块或禁用网卡设备,这常用于硬件调试、驱动更新或解决网络冲突,以下是详细操作指南,需root权限,操作不当可能导致网络中断,请谨慎执行,临时禁用网卡(不卸载驱动)适用于临时关闭网络连接,重启后自动恢复,# 或使用传统 ifconfigsudo ifcon……

    2025年7月24日
    1800
  • Linux下如何测试Tomcat是否正常运行?

    在Linux系统中测试Tomcat是否运行是日常运维和开发中的常见需求,通过多种方法可以全面确认Tomcat的状态,包括进程检查、端口监听验证、服务状态确认、页面访问测试以及日志分析等,以下是详细的测试步骤和操作说明,通过进程检查Tomcat运行状态Tomcat启动后会创建相应的Java进程,检查进程是否存在是……

    2天前
    500
  • Linux部署PHP选LAMP方案?

    环境准备更新系统sudo apt update && sudo apt upgrade -y # Debian/Ubuntusudo yum update -y # CentOS/RHEL安装Apache服务器sudo apt install apache2 -y # Debian/Ubuntu……

    2025年7月15日
    2400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信