Linux系统--SSH连接
SSH连接
SSH(Secure Shell)是 Linux 系统中最常用的远程登录方式之一。通过 SSH,我们可以安全地连接到远程服务器或局域网中的其他设备,进行命令操作、文件传输等。一般linux系统都会默认开启ssh服务,如果使用的windows系统,可以通过安装git bash来使用ssh,也可以使用xshell或者花生壳等软件访问。
本文将介绍如何在 局域网 与 公网 环境中使用 SSH 进行连接,以及常见的配置技巧.
局域网内ssh链接
在局域网中,只需知道目标设备的 IP 地址和登录用户名即可直接连接。
1 | ssh 用户名@IP地址 |
示例:
1 | $ ssh user@192.168.1.105 |
使用后,需要输入密码,选择“yes”后才能进行登录。局域网内的设备必须在同一网段下,并且目标主机的 SSH 服务(sshd)必须处于运行状态。可以通过以下命令查看 SSH 服务运行状态。
1 | sudo systemctl status ssh |
使用公网IP链接
当目标主机不在同一个局域网时,就需要通过公网 IP 进行 SSH 连接。
1 | ssh 用户名@公网IP地址 -p 端口号 |
获取当前公网IP方式
1 | curl ifconfig.me |
注意的是,路由器对应一个公网IP,路由器下所有的设备共用它所处的公网IP,如果需要连接到路由器下局域网中的某个设备,需要设置端口转发规则。
公网访问局域网内设备(端口转发)
如果你希望在外网环境下访问家庭或公司路由器下的某台设备(如一台树莓派或服务器),则需要在路由器上配置端口转发(Port Forwarding)。
设置步骤:
在路由器的管理界面中,找到“端口转发”或“虚拟服务器”设置,具体位置可能因路由器品牌和型号不同而有所差异。通常在“高级设置”或“网络设置”部分。添加一条新的端口转发规则:
1 | 外部端口:22(SSH 默认端口) |
添加完成后,保存并重启路由器。
从公网连接时可以使用以下命令进行连接,默认端口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(公钥)。
- 将公钥拷贝到目标主机 也可以手动复制 id_rsa.pub 内容到远程主机的,添加到末尾即可:
1
ssh-copy-id 用户名@IP地址
此后即可直接登录,无需再输入密码。1
~/.ssh/authorized_keys
常见问题
提示
Permission denied (publickey).
解决方式:用户名或密码错误 / 权限不足,使用sudo
命令和校验用户名准确性提示
Connection refused
解决方式:检查远程服务器是否正常启动,检查远程服务器的防火墙是否开启,检查远程服务器的端口是否开放。无法访问公网设备
解决方式:路由器端口转发未设置或防火墙拦截,检查路由器设置及服务器防火墙。