ubuntu下使用ssh做代理

本文详细介绍了如何在Ubuntu Linux系统下通过SSH代理穿透网络限制的方法,包括配置步骤、创建启动器及脚本实现自动登录,以及如何关闭SSH代理。适合Linux系统下需要远程访问的用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前我曾经写过一篇文章,讲的是在windows下通过ssh和firefox来穿越gfw,现在本篇文章将介绍在ubuntu乃至linux系统下柔和通过ssh来做代理。
我们通过之前的文章知道win下连接ssh需要MyEnTunnel或者putty软件,但是在linux系统下你并不需要这些软件,就拿ubuntu来说,安装好ubuntu之后,ubuntu就已近只带了ssh,那么我们该如何使用呢?
假设你的ssh帐号为xxx,服务区地址为yyy.com
首先打开终端:
输入
ssh -qTfnN -D 7070 xxx@yyy.com
-q :- be very quite, we are acting only as a tunnel. 使用安静模式
-T :- Do not allocate a pseudo tty, we are only acting a tunnel.不要分配tty
-f :- move the ssh process to background, as we don’t want to interact with this ssh session directly. 后台运行
-N :- Do not execute remote command.不执行远程命令
-n :- redirect standard input to /dev/null.从定向输出到/dev/null
然后回车,过一小会会出现提示,让你输入yes或者no,这里当然要输入yes,输入yes后接着会要你输入密码,现在只要输入ssh帐号的密码就可以了。
当然这样的话大家会觉得很麻烦,其实我们可以创建一个启动器,名称随意,命令类似于 ssh -qTfnN -D 7070 xxx@yyy.com,即可.
或者创建一个脚本,脚本内容如下:
#!/bin/bash
ssh -qTfnN -D 7070 xxx@yyy.com
保存为ssh.sh 然后在属性中勾选允许以程序执行文件即可
之前有人回复要是能够自动登录就好了,其实还真有这个脚本,但是有点不好的地方就是密码是明文保存的有点不安全,当然,如果就你一个人用电脑这个也就不是什么问题了,下面贴出脚本
#!/usr/bin/expect

sleep 18

###########################################
# 服务器地址(或IP)

set SERVER "xxx"

# 服务器 SSH 端口号

set PORT "xxx"

# SSH 用户名

set USER "xxx"

# 密码
set PASSWD "xxx"

###########################################

set timeout 60

spawn /usr/bin/ssh -qTfnN -D 7070 -p $PORT $USER@$SERVER

expect {

"*(yes/no)*" { send "yes\r"}

"password:" { send "$PASSWD\r" }

}

expect eof
把文中的xxx改成你自己的信息,然后保存成ssh.sh文件,然后赋予可执行权限,接着让他开机自启动即可。(运行此脚本需要安装expect。)
但我们成功的登录后就可以关闭终端了,也许有人问,这样我该如何关闭ssh代理呢?其实很简单,在终端中输入
killall ssh 即可。
### 配置和使用 SSH 进行远程连接 #### 1. 安装 SSH 服务 为了实现远程连接,需要在 Ubuntu 上安装 SSH 服务器。可以通过以下命令完成安装: ```bash sudo apt update sudo apt install openssh-server ``` 这一步会更新系统的软件包列表并安装 OpenSSH 服务器[^2]。 #### 2. 检查 SSH 服务状态 安装完成后,可以检查 SSH 服务的状态以确认其正常运行: ```bash sudo systemctl status ssh ``` 如果服务未启动,则可通过以下命令手动启动它: ```bash sudo systemctl start ssh ``` 此外,还可以设置 SSH 服务开机自启,以便系统重启后无需再次手动启动服务: ```bash sudo systemctl enable ssh ``` 以上操作可确保 SSH 服务始终处于活动状态[^3]。 #### 3. 修改 SSH 配置文件 默认情况下,某些配置可能不允许特定类型的连接。因此,建议编辑 `/etc/ssh/sshd_config` 文件来调整这些参数: - **启用密码认证** 找到 `PasswordAuthentication no` 并将其更改为 `PasswordAuthentication yes` 或取消注释该行。 - **允许 root 用户登录** 如果希望以 root 身份登录,可以在 `PermitRootLogin prohibit-password` 前添加 `#` 注释符,并在其下新增一行 `PermitRootLogin yes`。 保存更改后,重新加载 SSH 服务以应用新配置: ```bash sudo systemctl reload ssh ``` 此过程能够优化 SSH 的功能性和安全性。 #### 4. 获取服务器 IP 地址 要从另一台设备访问 Ubuntu 服务器,需知道它的网络地址。可以执行以下命令获取本机的 IP 地址: ```bash ifconfig ``` 如果没有安装 `ifconfig` 工具,先通过以下命令安装必要的工具集: ```bash sudo apt-get install net-tools ``` 随后再尝试调用 `ifconfig` 查看详细的网卡信息以及分配给它们的 IP 地址[^5]。 #### 5. 测试远程连接 假设目标机器上的用户名为 `abolo`,而服务器的私有 IP 是 `192.168.80.129`,那么可以从客户端(如 Windows 系统中的 PowerShell 或其他支持 SSH 协议的应用程序)发起如下请求: ```bash ssh abolo@192.168.80.129 ``` 当提示输入密码时,请提供对应账户的有效凭证即可完成验证并进入交互模式。 #### 6. 使用 VS Code Remote-SSH 插件 对于开发者而言,借助 Visual Studio Code 提供的 Remote Development 功能可以直接利用图形界面管理远端项目资源。然而有时可能会遇到性能瓶颈或者兼容性障碍等问题;此时按照下面指引排查应能有效缓解状况——即关闭本地用户级代理机制: 打开快捷菜单 (Ctrl+Shift+P),定位至 “Preferences: Open Settings (JSON)” 条目,接着查找名为 `"remote.SSH.useLocalServer"` 的选项并将之设为 false: ```json "remote.SSH.useLocalServer": false, ``` 最后记得重启应用程序使改动生效[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值