SSH远程连接入门:安全高效地管理服务器

SSH远程连接入门:安全高效地管理服务器

服务器在机房,怎么远程操作?用SSH。

今天教你SSH的基本用法,让远程管理变得简单。

最基本的连接

bash 复制代码
ssh 用户名@服务器IP

例如:

bash 复制代码
ssh root@192.168.1.100

第一次连接会问你确认指纹,输入yes。然后输入密码就连上了。

指定端口

默认端口是22,如果改了:

bash 复制代码
ssh -p 2222 root@192.168.1.100

用密钥登录(推荐)

每次输密码太麻烦,用密钥更安全更方便。

第一步:生成密钥对

bash 复制代码
ssh-keygen -t rsa -b 4096

一路回车,会在~/.ssh/生成两个文件:

  • id_rsa - 私钥,绝对不能泄露
  • id_rsa.pub - 公钥,放到服务器上

第二步:把公钥传到服务器

bash 复制代码
ssh-copy-id root@192.168.1.100

或者手动复制:

bash 复制代码
cat ~/.ssh/id_rsa.pub | ssh root@192.168.1.100 "cat >> ~/.ssh/authorized_keys"

第三步:测试

bash 复制代码
ssh root@192.168.1.100

不用输密码直接连上了!

配置别名

每次输IP太长,可以配置别名。

编辑~/.ssh/config

复制代码
Host myserver
    HostName 192.168.1.100
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa

以后直接:

bash 复制代码
ssh myserver

一个单词搞定!

常用操作

执行单条命令不登录:

bash 复制代码
ssh root@192.168.1.100 "df -h"

上传文件:

bash 复制代码
scp file.txt root@192.168.1.100:/tmp/

下载文件:

bash 复制代码
scp root@192.168.1.100:/var/log/app.log ./

上传目录:

bash 复制代码
scp -r mydir/ root@192.168.1.100:/opt/

端口转发

本地转发(访问本地端口=访问远程服务):

bash 复制代码
ssh -L 8080:localhost:80 root@192.168.1.100

现在访问本地8080就相当于访问服务器的80端口。

远程转发(让远程能访问本地服务):

bash 复制代码
ssh -R 8080:localhost:3000 root@192.168.1.100

保持连接不断开

SSH连接久了不操作会断开,配置保活。

编辑~/.ssh/config

复制代码
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

每60秒发一次心跳,3次没响应才断开。

跳板机登录

服务器在内网,需要通过跳板机:

bash 复制代码
ssh -J user@跳板机IP root@目标服务器IP

或者在config里配置:

复制代码
Host target
    HostName 192.168.1.100
    User root
    ProxyJump user@跳板机IP

安全建议

1. 禁用root密码登录

编辑/etc/ssh/sshd_config

复制代码
PermitRootLogin prohibit-password
PasswordAuthentication no

只允许密钥登录。

2. 修改默认端口

复制代码
Port 2222

3. 限制登录IP

复制代码
AllowUsers root@192.168.1.*

4. 重启SSH服务

bash 复制代码
systemctl restart sshd

常见问题

Q:连接超时?

检查:

  1. 服务器IP是否正确
  2. 防火墙是否开放22端口
  3. SSH服务是否运行

Q:密钥登录不生效?

检查服务器上的权限:

bash 复制代码
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Q:连接老是断?

配置ServerAliveInterval,或者用screen/tmux保持会话。

更便捷的方案

管理多台服务器,每台都配置SSH挺麻烦的。特别是有些在内网,还得配跳板机。

我现在用星空组网把所有服务器组到一个虚拟网络,每台服务器有个固定的虚拟IP。SSH配置简单多了:

复制代码
Host server1
    HostName 10.26.1.10
    User root

Host server2
    HostName 10.26.1.11
    User root

不用跳板机,不用记公网IP,在哪都能直接连。

小结

SSH基本用法:

  • 连接:ssh user@ip
  • 密钥登录:ssh-keygen + ssh-copy-id
  • 配置别名:编辑~/.ssh/config
  • 传文件:scp

配好密钥和别名,远程管理效率翻倍。

有问题评论区交流~

相关推荐
jarreyer1 天前
【AI Agent】大模型自动化载体
运维·自动化
xixingzhe21 天前
SpringBoot + Nginx 免鉴权接口安全防护方案
运维·nginx·安全
翼龙云_cloud1 天前
阿里云国际代理商:阿里云 ECS 全维度监控配置教程
运维·阿里云·云计算·监控
笑锝没心没肺1 天前
fail2ban工具安装配置及使用
linux·运维·服务器
xurime1 天前
Excelize 开源十周年,发布 2.11.0 版本
golang·开源·github·excel·导出·导入·excelize·基础库
zt1985q1 天前
本地部署开源智能家居集成平台 ioBroker 并实现外部访问( Windows 版本)
运维·服务器·智能家居
大卡片1 天前
linux内核驱动开发
linux·运维·驱动开发
心心喵1 天前
[linux] nohup和pm2的区别 进程保活
linux·运维·服务器
NGINX开源社区1 天前
F5 NGINX Ingress Controller 5.3.0 新增功能
运维
醉熏的石头1 天前
Ubuntu 中的编程语言(中)
linux·ubuntu·scala