SSH常用功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH常用功能相关的知识,希望对你有一定的参考价值。

参考技术A 最近需要从外网通过ssh访问内网主机,但是又不具备给路由器添加端口映射的权限,于是用到了ssh的远程端口转发。于是打算在这里整理一下ssh常用的功能和用法。

但由于细节特别多,一次肯定写不完,因此有些细节会暂时省略,待日后补上,特别是截图。

这是最基本的了,也没什么好说的。

其中-p用来指定端口(如果端口不是默认的22的话)

为了保证安全,可以在把本地产生的密钥对的公钥文件传到服务端,这样登陆的时候就不需要输入用户名/密码了。当然如果产生密钥对的时候还使用了口令,这时还是需要输入口令,这可以用ssh-agent来解决~~越来越懒了。当然如果你想在某个服务端再登陆到另一个服务端,那么可以开启ssh-agent的转发功能~~真是懒到家了。

这里分为四种,本地转发,远程转发,动态转发和X转发

先说明常见的参数

这句命令需要在本地输入,意思就是在本地打开local_port端口监听,把发送到这个端口的TCP数据包经过tunnel_host之后,发送到remote_host的remote_port上。

比如我想把发送到本地10000端口的tcp数据包经过1.1.1.1转发到1.2.3.4的20000端口,那么可以这么写:

如果tunnel_host和remote_host相同,那么就相当于直接发送到remote_host了,不经过另一台机器。

这句命令需要在本地输入,意思是在remote_host(在这里remote_host == tunnel_host)上打开监听remote_port,把传给remote_port的tcp数据转发到本地主机的local_port。

按道理来讲,remote_host应该可以不等于tunnel_host,但是我没有这个需求也就没有尝试了,有待实验。

远程转发通常用在外网想主动连接内网主机的时候,本质上就是内网主机先建立一条通向外网主机的连接,然后让外网主机直接顺着这条连接发送数据给内网主机:

那么我用

就可以通过ssh连接内网主机了。

值得注意的是,user1是服务器的用户名而user2是内网主机的用户名

之前两种的转发都是指定了转发目的地的端口,那动态转发的意思就是根据数据包的协议动态选择转发的目的端口。多用于翻墙。

X转发就是说通过ssh转发X11协议的数据,简单的说就是直接在本地运行远程的带有GUI的程序。

讲道理X转发可以用远程转发来实现,但是比较麻烦。

打开X转发需要保证/etc/ssh/sshd_config(配置文件的路径随不同linux发行版有可能会发生改变)钟的X11Forwarding是yes的。

SSH远程管理常用的几种配置

一、关于SSH(Secure Shell)

1、SSH是一种安全性通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
2、SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。
3、与早期的telnet(远程登录)、rsh(Remote Shell,远程执行命令)、rcp(Remote File Copy,远程复制)等应用相比,SSH协议提供了更好的安全性。
4、OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。

二、配置OpenSSH服务端

1、首先确认安装客户端和服务端的程序
rpm -qa | grep open
技术分享图片
2、编辑OpenSSH的主配置文件
vi /etc/ssh/sshd_config
下面是配置文件中的一部分配置:

#LoginGraceTime 2m      ===登录宽限时间  
#PermitRootLogin yes     ===允许root登陆
#StrictModes yes         ===开启精确模式
#MaxAuthTries 6         ===最大授权尝试次数
#MaxSessions 10         ===最大连接数
#PermitEmptyPasswords no  ===禁止空密码用户

3、禁止root用户登录
38行 #PermitRootLogin yes 将其改为no
技术分享图片
重启服务客户端验证root用户登录
systemctl restart sshd
技术分享图片
4、允许tom和jack登录
在上述配置末加上允许列表:AllowUsers jack tom //允许Jack、tom登录
技术分享图片
添加tom和jack用户

useradd jack;echo 123123 |passwd --stdin jack
useradd tom;echo 123123 |passwd --stdin tom

技术分享图片
重启sshd服务验证登录(列举jack)
Win+r打开cmd输入
ssh -p 22 [email protected]
技术分享图片
5、开启wheel组增加安全性
上述添加jack用户可以登录,且可以切换root用户,具有安全漏洞如下图:
技术分享图片
进入/etc/pam.d/su切换配置文件中开启wheel组
vi /etc/pam.d/su //在root用户下修改,否则无权限
技术分享图片
重启服务验证jack用户无法切换root
技术分享图片
6、公钥私钥验证
1).一个公钥对应一个私钥。
2).密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
3).如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
4).如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
vi /etc/ssh/sshd_config //root下更改
开启服务器的密钥验证选项:

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

技术分享图片
systemctl restart sshd //重启服务
添加lisi用户绑定服务器上的tom

useradd lisi;echo "123123" | passwd --stdin lisi    //lisi用户作为客户端
su - lisi   //切换到lisi
ssh-keygen -t rsa   //采用rsa加密算法加密

技术分享图片
查看密钥对(id_rsa为私钥,id_rsa.pub为公钥成对出现)
ls /home/lisi/.ssh
技术分享图片
将公钥上传至tom服务器
ssh-copy-id -i id_rsa.pub [email protected]
在服务器tom查看文件

su - tom
ls /home/tom/.ssh

技术分享图片
服务器关闭密码认证vi /etc/ssh/ssh_config 将passwordAuthentication yes改为no,重启服务,这样其他用户要想登录tom服务器必须将私钥发给他才能成功登录,否则无法登录。
7、免密登录:代理(不安全)
在客户端lisi用户下面配置

ssh-agent bash
ssh-add

输入密钥密码
代理成功!无密码直接登录服务器tom!
技术分享图片

以上是关于SSH常用功能的主要内容,如果未能解决你的问题,请参考以下文章

SSH远程管理常用的几种配置

SSH免登陆ESXI让操作更便捷安全(几种常用工具)

常用工具——Rsync

CentOS 7里用啥管理远程登录

Alpine Linux 常用命令

JAVA中使用JSch库实现SSH功能