SSH简介
比如主机A运行a虚拟机,那么处于同一局域网下的主机B便可以通过在主机A执行以下命令达到通过主机B 1234端口。比如对于本机2121端口连接了远程SSH服务器remoteSSHHost,那么动态转发命令如下。本机与远程SSH服务器建立了加密连接,针对本机某个端口的访问都通过这个加密连接转发。删除hostname对应公钥,当然也可以手动在文件中删除。在建立本机到远程的SSH隧道后,使远程服务器访问本
·
安装以及基本使用
安装客户端可以通过以下命令进行安装
# ubuntu debian
apt-get install openssh-client
# centos fedora
dnf install openssh-clients
一般连接用法就是ssh user@hostname
-p port : 指定ssh端口,默认为22
-N : 表示端口转发建立的SSH只用于端口转发,而不能执行远程命令
连接流程
-
初次连接,会将远程服务器公钥hash值储存在客户端
具体储存在~/.ssh/known_hosts文件
-
若服务器公钥hash发生改变,便会与储存不一致。在这种情况,可以通过
ssh-keygen -R hostname
删除hostname对应公钥,当然也可以手动在文件中删除
配置
配置文件位置
~/.ssh/id_rsa
:用于 SSH 协议版本2 的 RSA 私钥。~/.ssh/id_rsa.pub
:用于SSH 协议版本2 的 RSA 公钥。~/.ssh/config
: 用户个人ssh配置文件/etc/ssh/ssh_config
: 全局ssh配置文件~/.ssh/identity
:用于 SSH 协议版本1 的 RSA 私钥。~/.ssh/identity.pub
:用于 SSH 协议版本1 的 RSA 公钥。~/.ssh/known_hosts
:包含 SSH 服务器的公钥指纹。~/.ssh/id_ecdsa
: 用户的ECDSA私钥~/.ssh/id_ecdsa.pub
: 用户的ECDSA公钥
SSH配置
语法就是配置命令后面接值。接可以空格也可以等于
# 配置用户名、密码
# 比如针对host remoter.com
Host remoteSSH
HostName remoter.com
User root
Port 2222
# 那么之后ssh remote SSH 就等于ssh -p 2222 root@retomer.com
密钥登录
ssh密钥登录过程如下
- 客户端通过ssh-keygen生成公私钥
- 将客户端公钥放入远程服务器相应用户的
~/.ssh/authorized_keys
- 客户端向服务端发起SSH登录请求
- 服务器收到请求后,会发送随机数据给用户,要求证明身份
- 客户端收到服务器发来数据,使用私钥对数据进行签名,发给服务器
- 服务器收到加密签名后,使用公钥解密,若一致则允许用户登录
ssh-keygen
# 生成
ssh-keygen
# 移除
ssh-keygen -R example.com
端口转发
本机端口转发
将对本机A指定端口X的访问请求转发给主机B的Y端口
ssh -L [接受访问的地址]本机端口X:远程主机B:远程主机B端口
远程端口转发
在建立本机到远程的SSH隧道后,使远程服务器访问本机
ssh -R 远程端口:远程服务器IP:远程服务器端口
比如主机A运行a虚拟机,那么处于同一局域网下的主机B便可以通过在主机A执行以下命令达到通过主机B 1234端口
ssh -R 主机A端口:虚拟机a IP:虚拟机a 端口 主机B用户名@主机B IP
动态转发
本机与远程SSH服务器建立了加密连接,针对本机某个端口的访问都通过这个加密连接转发
ssh -D 本地主机A端口X 远程SSH服务器
比如对于本机2121端口连接了远程SSH服务器remoteSSHHost,那么动态转发命令如下
ssh -D 2121 remoteSSHHost
# 用户访问请求。指定通过sock5协议的本地端口2121去访问www.example.com
curl -x sock5://localhost:2121 http://www.example.com
服务端
ssh服务端可以通过如下命令安装
# Debian
$ sudo aptitude install openssh-server
# Red Hat
$ sudo yum install openssh-server
sshd 的配置文件在/etc/ssh
目录,主配置文件是sshd_config
,此外还有一些安装时生成的密钥。
/etc/ssh/sshd_config
:配置文件/etc/ssh/ssh_host_ecdsa_key
:ECDSA 私钥。/etc/ssh/ssh_host_ecdsa_key.pub
:ECDSA 公钥。/etc/ssh/ssh_host_key
:用于 SSH 1 协议版本的 RSA 私钥。/etc/ssh/ssh_host_key.pub
:用于 SSH 1 协议版本的 RSA 公钥。/etc/ssh/ssh_host_rsa_key
:用于 SSH 2 协议版本的 RSA 私钥。/etc/ssh/ssh_host_rsa_key.pub
:用于 SSH 2 协议版本的 RSA 公钥。/etc/pam.d/sshd
:PAM 配置文件。
sshd_config可以配置项很多,下面仅介绍部分
- PasswordAuthentication 是否允许密码登录,默认为yes
- ClientAliveCountMax 指定建立连接后,客户端失去响应时,服务器尝试连接的次数(
ClientAliveCountMax 8
) - Port 代表sshd监听端口,默认为22
Ref
- https://wangdoc.com/ssh/port-forwarding.html
- https://zhuanlan.zhihu.com/p/148825449
更多推荐
已为社区贡献1条内容
所有评论(0)