SSH代理

通过ssh代理功能连接到内网linux服务器

需要通过一台公网主机代理

  1. 建立内服到云的反向代理
  2. 建立云服上的正向代理
  3. 在个人机器上通过云服ssh到内服

下面三行命令分别在内网服务器、云服务器、和个人电脑上执行。

ssh -fCNR 8081:localhost:22 云用户@云IP
ssh -fCNL "*:8082:localhost:8081" localhost
ssh -p 8082 内服用户@云IP

8081是云服上端口,用来与内服上的22端口绑定。
8082为云服上转发端口,将数据转发到8081端口。
*表示接受来自任意机器的访问。
https://segmentfault.com/a/1190000002718360

SSH 参数解释

  • -f 后台运行
  • -C 允许压缩数据
  • -N 不执行任何命令
  • -R 将端口绑定到远程服务器,反向代理
  • -L 将端口绑定到本地客户端,正向代理

sshkey免密码

ssh即secure shell,即安全shell。sshkey用来加密传输。
加密传输的算法有多种,git可使用rsa,rsa使用一对特定的数字,这两个数字就是在使用git和github的时候所遇到的public key(公钥)以及private key(私钥)。公钥就是那个用来加密的数字,在本机生成了公钥之后,要上传到github。从github发回来的,是用公钥加密过的数据,可以用本地的私钥来还原。不管是公钥还是私钥,丢失一个都不能用了,解决方法也很简单,重新再生成一次,然后在github.com里再设置一次。
方法一,密钥验证。安全、配置简单、同时ssh、scp、sftp等登录都免去了输入密码的麻烦。

查看~/.ssh下是否已经生成id_rsa.pub,如果已存在可以直接使用它,覆盖它可能会影响现有服务正常使用。
如果没有则客户端生成密匙对,最后在~/.ssh下生成id_rsa.pub公钥。
#ssh-keygen -t rsa
然后将公钥通过scp命令上传到服务器上,将本地生成的公钥拷贝到远程服务器的下并改名为authorized_keys。
#scp ~/.ssh/id_rsa.pub 用户名@服务器的ip:~/.ssh/authorized_keys

方法二,通过sshpass明文传送密码匙,安全性不高。

安装sshpass允许你用 -p 参数指定明文密码,然后直接登录远程服务器。例如:
# sudo apt-get install sshpass
sshpass允许用 -p 参数指定明文密码,然后直接登录远程服务器
# sshpass -p '密码' ssh 用户名@服务器ip

http://www.linuxidc.com/Linux/2011-02/31921.htm
http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646346.html

开机自动运行ssh命令建立反向代理

通过supervisor配置自启动,ssh服务配置示例:

[program:service2]
command=ssh -fCNR 8081:localhost:22 云用户@云IP
autorstart=true #设置随supervisor的启动而启动
directory=~ #相当于在该目录下执行程序
autorestart=true #程序停止之后是否需要重新将其启动
startsecs=10 #重新启动时,等待的时间
startretries=36 #重启程序的次数
redirect_stderr=true #是否将程序错误信息重定向的到文件
stdout_logfile=~/%(program_name)s_log.txt #将程序输出重定向到该文件
stderr_logfile=~/%(program_name)s_err.txt #将程序错误信息重定向到该文件
numprocs = 2
numprocs_start = 8850
user = #系统用户名
process_name = 163gs-%(process_num)s

如果日志中报ssh “permissions are too open” error
.ssh/id_rsa 不要设置为777权限,Chmod 400 即可。

自动ssh登录脚本

#!/usr/bin/expect
set timeout 10
spawn ssh root@ip
expect {
    "*yes/no*" {
        send "yes\n";
        exp_continue;
    }
    "*password:*" {
        send "密码\r";
        exp_continue;
    }
}
interact

发布者

brogrammer

不怕路太远找不到终点,就怕两个世界画不成一个圆。 相对于很闷的计算机痴迷者,brogrammer是潇洒的程序员,他们善于社交,喜欢外出玩乐,他们是荷尔蒙旺盛的程序员新品种,是赋有社交型大脑的技术男。相对于一些成熟的公司里,他们在创业公司里更常见。

发表评论

电子邮件地址不会被公开。 必填项已用*标注