SSH笔记

SSH笔记

记录一些ssh连接用到的命令

SSH连接远程服务器

bash 复制代码
# 直接连接
ssh user@ip

# 特定端口连接
ssh -P 12345 user@ip

创建本机SSH密钥

生成新的密钥

bash 复制代码
rm -r ~/.ssh
ssh-keygen -t rsa

然后全部选择回车

查看生成好的密钥

bash 复制代码
cat ~/.ssh/id_rsa.pub

拉取或推送远程文件

bash 复制代码
# 拉取
scp -r user@ip:/远程文件绝对路径 /本地文件绝对路径

# 推送
scp -r /本地文件绝对路径 user@ip:/远程文件绝对路径

将本地端口基于SSH映射到远程服务器

仅转发端口信息,不进入远程ssh终端

bash 复制代码
# 非后台运行
ssh -D 10080 -N -C user@ip

# 后台运行
ssh -D 10080 -N -f -C user@ip

查看是否在运行

bash 复制代码
ps aux | grep ssh

杀死后台运行

bash 复制代码
pkill -f "ssh -D 10080"

SSH免密连接

首先生成本地的SSH密钥

然后推送到云服务器:

bash 复制代码
ssh-copy-id user@ip

SSH自动重连

安装autossh:

bash 复制代码
sudo apt install autossh

自动重连的连接:

bash 复制代码
autossh -M 0 -D 10080 -N -C -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" user@ip

参数解读:
-o ServerAliveInterval=30: 每 30 秒向服务器发送一次心跳包,防止因空闲被切断
-o ServerAliveCountMax=3: 如果连续 3 次心跳无响应,则认定连接已断开并退出

将其设置为开机自启动

新建服务配置文件

bash 复制代码
sudo vim /etc/systemd/system/ssh_autotool.service

写入内容:

bash 复制代码
[Unit]
Description=ssh_autotool
After=network-online.target
# 强制要求网络就绪后再启动
Requires=network-online.target
# 可选:如果用NetworkManager管理网络,添加这个依赖
After=NetworkManager.service

[Service]
User=建立ssh连接的用户名
Environment="AUTOSSH_GATETIME=0"
ExecStartPre=/bin/sleep 5
ExecStart=/usr/bin/autossh -M 0 -D 10080 -N -C -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" user@ip
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启动配置:

bash 复制代码
systemctl daemon-reload
systemctl enable ssh_autotool.service
systemctl start ssh_autotool.service
相关推荐
三品吉他手会点灯3 小时前
C语言学习笔记 - 40.数据类型 - scanf函数的编程规范与非法输入处理
c语言·开发语言·笔记·学习
大G的笔记本3 小时前
synchronized 的原理(简单版)
笔记
daad7774 小时前
记录一个希尔伯特曲线笔记
笔记
江屿风5 小时前
C++OJ题经验总结(竞赛)1
开发语言·c++·笔记·算法
wangcheng3035 小时前
AI+制造正悄然改变工业生产
笔记
晓梦林6 小时前
homelab2靶场学习笔记
笔记·学习
sheeta19986 小时前
LeetCode 每日一题笔记 日期:2026.05.19 题目:2540. 最小公共值
笔记·leetcode·排序算法
LN花开富贵7 小时前
Ubuntu aarch64 架构安装 NoMachine 远程控制 避坑与实战
linux·运维·笔记·学习·ubuntu·嵌入式
不是山谷.:.8 小时前
前端性能优化全解析:从原理到落地,覆盖全领域与多技术栈
前端·笔记·性能优化·状态模式