打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ssh配置记录
userphoto

2022.05.30 云南

关注

教 程 一

#安装

1、先安装telnet,避免安装ssh出错后无法

yum install telnet-server -y

systemctl start telnet.socket

netstat -lnt|grep 23 检查telnet端口是否正常打开

如果telnet无法登录 vim /etc/securetty 最后一行添加pts/1

2、确保telnet能够正常登录后,卸载ssh

备份原有ssh配置文件,然后卸载系统预装的ssh

cp /etc/ssh/sshd_config{,.bak}

yum remove openssh -y

3、源码安装ssh

tar zxvf openssh-8.7p1.tar.gz

cd openssh-8.7p1/

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr --with-pam(pam可选项)

报错miss zlib执行yum install zlib-devel -y

make -j 4 && make install

备注:

–prefix=当前ssh安装目录

–sysconfdir=配置文件目录

–with-ssl-dir=openssl安装目录

–with-pam 启用pam

4、添加启动文件

cd contrib/redhat/

cp sshd.init /etc/init.d/sshd

chkconfig --add sshd

chkconfig sshd on

启用pam则将sshd.pam 复制到/etc/pam.d/

如不能登录则设置

setenforce 0 临时关闭

修改 SELINUX=disabled

sed -i 's/^SELINUX=.*$/SELINUX=disabled/’ /etc/selinux/config

尝试登录ssh,一切正常后关闭telnet服务

确认安装完毕后注释/etc/securetty 添加的pts/1

关闭telnet服务

5、安装openssl

部分版本ssh升级需安装高版本的openssl

yum remove openssh -y 卸载原有openssl

下载openssl

解压 openssl

cd openssl-1.1.1l/

./config --prefix=/usr/

make -j 4&& make install

#常用配置

ssh代理

假设场景,有3台服务器,ABC,C不通外网,B能访问C,可通过ssh代理让A直接访问到C

正向代理

在本地启动端口,把本地端口数据转发到远端(让执行命令的主机将能访问的端口暴露出来)

1、连接在B主机上启动一个端口PortB,将B主机的端口转发到C主机的端口,此时A访问B主机的PortB等于访问C主机的PortC ,远程端口映射到其他机器,访问远程主机等同于访问该主机映射到其他主机的端口

ssh -CfNg -L 0.0.0.0:PortB:HostC:PortC -o ServerAliveInterval=60 user@HostC

2、在A主机上将启动一个端口PortA,通过HostB转发到HostC:PortC上,这时访问HostA:PortA 相当于访问 HostC:PortC(本地端口通过跳板映射到其他机器,让A能访问B能访问的端口)

ssh -CfNg -L 0.0.0.0:PortA:HostC:PortC -o ServerAliveInterval=60 user@HostB

反向代理

由远端将自己能访问的端口通过ssh转发出去,并告诉近端准备一个端口监听,访问近端监听端口的所有流量会由远端转发到C主机指定端口(让A能访问到执行命令的主机B能访问到的C端口)

1、B主机执行命令启动一个转发,将A主机的PortA映射到自己能访问的C的PortC, 此时访问A主机PortA等于访问C主机的PortC

ssh -CfNg -R HostA:PortA:HostC:PortC -o ServerAliveInterval=60 user@HostA

注:A主机/etc/ssh/sshd_config需添加 GatewayPorts yes


假如本机:只有一个ssh端口对外,另一个webport只能内网访问,可通过本地转发将webport映射出去,此时访问A主机PortA等于访问本机webport

ssh -CfNg -R HostA:PortA:127.0.0.1:webport -o ServerAliveInterval=60 user@HostA

参数详解:

-C:压缩数据

-f:后台运行

-N:不执行远程命令,需要继续再目标服务器执行命令可不加

-g:允许远端主机连接本地转发端口

ssh登录配置

配置 ~/.ssh/config

Host *

ServerAliveInterval 60 //自动发送空字符,避免断开

Host myserver

HostName 192.168.1.10

Port 22

User root

IdentityFile ~/.ssh/对应服务器私钥文件

配置后可通过ssh myserver 直接登录目标服务器

私钥登录

ssh-keygen -t rsa -C “myserver” //创建密钥对 -t 指定协议 -C 添加描述

ssh-copy-id -i '公钥文件’ remote_ip //将本机的公钥文件添加到远程主机的~



教 程 二

ssh反向代理+正向代理

用一台能够公网访问的host作为跳板机,转发不同端口到内网目标机的ssh端口,进而实现ssh远程登录。

配置中将会用到的SSH参数:

反向代理 ssh -fCNR

正向代理 ssh -fCNL

-g:允许远程主机连接主机(host)的转发端口;

-f 后台执行ssh指令

-C 允许压缩数据

-N 不执行远程指令

-R 将远程主机(服务器)的某个端口转发到本地主机指定的端口

-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口

-p 指定远程主机的端口

准备工作

开启ssh的转发功能,以ubuntu server12.04为例,服务器默认是安装了openssh-server的,在/etc/ssh/sshd_config末尾追加一下命令:

GatewayPorts yes

重启ssh

service ssh restart

正向代理

正向代理的典型例子是主机(A)通过一台可以访问的主机(B)访问主机(C)提供的服务。 主机A不能直接访问主机C提供的服务,但是主机A可以访问主机B,主机B可以访问到主机C的服务,那我们可以在主机A上使用以下命令

ssh -CNfL a_port:c_ip:c_port b_user@b_ip

其中CNf都不是必须参数,C是对数据进行压缩,N代表不执行远程命令(尽量带上),f代表后台执行。
主机A可以通过访问自己的a_port端口来访问主机C的c_port端口,例如主机A要通过自己的6666端口访问主机C的80端口,则需要执行一下命令

ssh -CNfL 6666:c_ip:80 b_user@b_ip

我们可以将问题简化一些,假设主机B的某个端口不对外提供服务,只能够主机B自己访问,那么上述命令中的主机C和主机B将是一样的,命令将变为

ssh -CNfL a_port:b_ip:b_port b_user@b_ipssh -CNfL a_port:localhost:b_port b_user@b_ip

以上两条命令是等价的,因为在第一个端口(a_port)后面的地址(b_ip)与端口(b_port)是相对于命令最末端的主机(b_ip)来说的,如果主机A是要用主机B来代理主机B的某项服务,那么第一个端口后写的主机地址为主机B的ip或者是localhost(127.0.0.1)是没有区别的。

可以看到正向代理是给自己代理提供服务的。

反向代理

反向代理与正向代理的原理产不多,都是用过ssh进行数据的传输,只是使用场景不同.反向代理的作用可以认为是把内网中的主机(A)暴露出来,以便于所有的主机都可以访问到主机A的服务

假定我们使用一台公网可以访问的主机(B)来给主机A做反向代理,那么命令如下

ssh -CNfR b_port:127.0.0.1:a_port b_user@b_ip

CNf与正向代理相同,也不是必须的,在主机A上使用以上命令,即可以把主机B的b_port端口映射到主机A的a_port端口。

举个简单的例子,主机A处于内网中,公网不能访问,在主机A上有一个http服务器,现在想让异地的朋友能够看到这个服务器上的内容,那我们就可以使用一下命令:

ssh -CNfR b_port:127.0.0.1:80 b_user@b_ip

b_port自己定义,不要冲突就行,之后我们通过b_ip:b_port就可以访问到主机A的http服务了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SSH反向连接及Autossh
0.5 Linux的联通性命令汇总
修改Linux系统下22端口的两种方法
ssh remote forward 监听 0.0.0.0 端口;How to make SSH remote port forward that listens 0.0.0.0
SSH基本概述
Linux运维系统学习 远程连接排错讲解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服