ssh 是用于远程登录的工具。ssh周边的工具包括scp 远程拷贝, sftp 远程安全ftp,sshfs挂载远程文件系统。

本文主要介绍ssh通过sock5代理访问远程机器,主要用于本机不能访问远程机器,通过代理来绕过限制访问远程机器的情形。

这里以访问github.com为例,想ssh github.com以便通过ssh协议下载github 上的代码。

假定本地机器不能访问github 但能访问代理,代理可访问github

1 代理服务器上安装sock5服务器

这里使用dante软件作sock5服务

 

假定代理服务器为centos 系统,安装方法

1.1 安装Dante,执行如下脚本

#!/bin/bash

cd ~

yum install gcc make bison flex rpm-build.x85_64

yum install openldap-devel.x86_64 pam-devel.x86_64 openssl-devel.x86_64 libgssapi-devel.x86_64 libgssapi-devel.x86_64

wget -c http://www.inet.no/dante/files/dante-1.4.0-pre1.tar.gz

#tar zxf dante-1.4.0-pre1.tar.gz

#cd dante-1.4.0-pre1/

#./configure

#make

#make install

 

rpmbuild -ta dante-1.4.0-pre1.tar.gz

cd ~/rpmbuild/RPMS/x86_64/

sudo rpm -ivh dante-1.4.0-0.pre1.el6.x86_64.rpm

 

1.2 在/etc下创建文件sockd.conf ,修改文件中的内外网IP,文件内容:

logoutput: /var/log/danted.log

internal: 192.168.115.72 port = 1080       #替换为代理的内网IP

external: 61.135.169.72                              #替换为代理的外网IP

method: none

#user.privileged: proxy

user.notprivileged: nobody

#user.libwrap: nobody

client pass {

from: 0.0.0.0/0 to: 0.0.0.0/0

log: connect disconnect

}

pass {

from: 0.0.0.0/0 to: 0.0.0.0/0 port gt 1023

command: bind

log: connect disconnect

}

pass {

from: 0.0.0.0/0 to: 0.0.0.0/0

command: connect udpassociate

log: connect disconnect

}

1.3 启动dante

/etc/init.d/sockd start

 

2 本地机器 安装connect 程序

2.1 下载connect.c

2.2 编译安装

$  gcc connect.c -o connect

$  mv connect /usr/local/bin

 

3 本地机器 在.ssh中创建文件config

加入如下内容

 

Host github.com

Hostname github.com

User git

ProxyCommand ~/.ssh/proxy-wrapper  '%h %p'

4 本地机器 在.ssh中创建文件proxy-wrapper 并将之权限改为可执行,注意将文件中的ip地址为1.2中设置的内网IP.

$ cat proxy-wrapper

#!/bin/bash

connect -S 192.168.115.72:1080 $@  #注意这里的ip为1.2中设置的内网IP

 

5 大功告成,试试吧,在本机机器上使用ssh协议clone

git clone git@github.com:jiayuehua/unpv22e.git

本地机器成功的下载下来了自己在github上的代码,很棒吧。

 

* 如果你的代理服务器是ubuntu系统,可以下载dante.confinstall_dante.sh,按照1.2修改dante.conf中的内外网ip ,然后运行install_dante.sh便可安装和启动dante 服务。