nginx代理ssh

项目上有个需求,就是用nginx反向代理ssh,这里使用的是nginx的proxy_pass。

先介绍下proxy_pass,有两个模块,一个是http_proxy,一个是stream_proxy,两个的使用方法一样,只是位置不一样,这里使用的是stream_proxy。

网上的一堆资料都只是写了proxy_pass,但是按照他们的写法,你的nginx就会报错。nginx反代ssh用的是stream_proxy,需要写在stream块里。

仔细看一下你的nginx配置文件,stream块里有专门的地方用来写配置文件。

jenkins ssh发布时提示nohup: failed to run command `java’: No such file or directory

新环境的jar包通过jenkins ssh发布,结果jar包推送到服务器上以后,提示nohup: failed to run command `java’: No such file or directory。这可让我有点意外。

本来在/etc/profile里都已经写好了java的路径,这怎么会提示找不到java命令呢?

随后,又在jenkins ssh发布账号的个人profile里编辑了一下,添加上java的路径,后来想了一下,干脆省事点,直接source一下算了,最后还是在启动脚本里添加了source /etc/profile,这个是比较简单粗暴的。

网上还有一种方法,是直接给java做一个链接,到你真实的java路径,这个就算了,不想去修改了,如果你的启动脚本比较多,还是可以使用这种方法的,毕竟是一劳永逸,方法如下:

ln -s /your_java_path/bin/java /usr/bin/java

Centos 7 使用key登陆SSH

首先,你要新建一个用户,权限可以最小,用来ssh登陆系统。

useradd

1、ssh-keygen -t rsa

使用新建的用户执行这条命令。

会让你输入密码,根据个人需要,我是没填密码,因为使用方便。

然后会在你当前用户的home目录下生成.ssh,里面有id_rsa,id_rsa.pub,id_rsa.pub就是公钥:

2、cat id_rsa.pub >> authorized_keys

因为ssh默认是会去读取authorized_keys里面的数据。

id_rsa是私钥,拖回本地来。

3、修改/etc/ssh/sshd_config

PermitRootLogin no

PubkeyAuthentication yes

PasswordAuthentication no

systemctl restart sshd

4、vi /etc/sudoers

在%wheel ALL=(ALL) NOPASSWD: ALL这一行上添加:

youruser ALL=(ALL) NOPASSWD:ALL

至此,就可以用新建的用户加id_rsa来登陆系统了。需要root权限直接sudo -s就可以。

PS:在实施过程中因为偷懒,直接使用ssh-copy-id来把key分发到其它服务器上,其中一台始终无法登陆,提示:

Authentication refused: bad ownership or modes

后来发现是.ssh目录权限问题,直接给700,问题解决。

比MyEnTunnel好用的替代品——BitVise SSH Client

之前一直使用MyEnTunnel作为SSH代理客户端。原因大家都懂的,防火墙屏蔽了各种网站,移动宽带又屏蔽了VPN,只能用SSH了。

MyEnTunnel虽然是绿色软件,使用简便,但是有点点不稳定,开的网页较多的话,就会有卡顿或者就是直接打不开的现象。BitVise SSH Client就不会这样,稳定性方面较MyEnTunnel高出许多,使用性方面略麻烦一些。配置好后就可以顺畅的使用了。同时也是一款可以免费使用的软件,虽是收费的,但官网明确说明可以免费使用。

不多说,下载地址:http://dl.bitvise.com/BvSshClient-Inst.exe