SSH连接

SSH(Secure Shell)是 Linux 系统中最常用的远程登录方式之一。通过 SSH,我们可以安全地连接到远程服务器或局域网中的其他设备,进行命令操作、文件传输等。一般linux系统都会默认开启ssh服务,如果使用的windows系统,可以通过安装git bash来使用ssh,也可以使用xshell或者花生壳等软件访问。

本文将介绍如何在 局域网 与 公网 环境中使用 SSH 进行连接,以及常见的配置技巧.

局域网内ssh链接

在局域网中,只需知道目标设备的 IP 地址和登录用户名即可直接连接。

1
ssh 用户名@IP地址

示例:

1
2
3
4
5
$ ssh user@192.168.1.105

$
ECDSA key fingerprint is SHA256:xxxxxx.
Are you sure you want to continue connecting (yes/no)?

使用后,需要输入密码,选择“yes”后才能进行登录。局域网内的设备必须在同一网段下,并且目标主机的 SSH 服务(sshd)必须处于运行状态。可以通过以下命令查看 SSH 服务运行状态。

1
2
sudo systemctl status ssh

使用公网IP链接

当目标主机不在同一个局域网时,就需要通过公网 IP 进行 SSH 连接。

1
ssh 用户名@公网IP地址 -p 端口号

获取当前公网IP方式

1
2
3
curl ifconfig.me
curl cip.cc
curl icanhazip.com

注意的是,路由器对应一个公网IP,路由器下所有的设备共用它所处的公网IP,如果需要连接到路由器下局域网中的某个设备,需要设置端口转发规则。

公网访问局域网内设备(端口转发)

如果你希望在外网环境下访问家庭或公司路由器下的某台设备(如一台树莓派或服务器),则需要在路由器上配置端口转发(Port Forwarding)

设置步骤:

在路由器的管理界面中,找到“端口转发”或“虚拟服务器”设置,具体位置可能因路由器品牌和型号不同而有所差异。通常在“高级设置”或“网络设置”部分。添加一条新的端口转发规则:

1
2
3
4
外部端口:22(SSH 默认端口)
内部 IP 地址:输入你要连接的局域网设备的 IP 地址(192.168.1.0.xxx)
内部端口:22
协议:TCP

添加完成后,保存并重启路由器。
从公网连接时可以使用以下命令进行连接,默认端口22

1
ssh 用户名@公网IP -p 外部端口

例如:

1
ssh user@123.45.67.89 -p 2222

免密登录

ssh连接,每次都输入密码可能比较麻烦,可以使用 SSH 密钥登录,实现安全的免密访问。

  • 在客户端生成密钥
    1
    ssh-keygen -t rsa

一路回车,默认会在 ~/.ssh/ 目录下生成 id_rsa(私钥) 和 id_rsa.pub(公钥)。

  • 将公钥拷贝到目标主机
    1
    ssh-copy-id 用户名@IP地址
    也可以手动复制 id_rsa.pub 内容到远程主机的,添加到末尾即可:
    1
    ~/.ssh/authorized_keys
    此后即可直接登录,无需再输入密码。

常见问题

  • 提示 Permission denied (publickey).
    解决方式:用户名或密码错误 / 权限不足,使用 sudo 命令和校验用户名准确性

  • 提示Connection refused
    解决方式:检查远程服务器是否正常启动,检查远程服务器的防火墙是否开启,检查远程服务器的端口是否开放。

  • 无法访问公网设备
    解决方式:路由器端口转发未设置或防火墙拦截,检查路由器设置及服务器防火墙。