文章目录
ssh代理
-L 正向代理
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口.
HostA ~]# ssh -CqT -NL HostA:PortA:HostC:PortC user@HostB ## B可以等于C
-R 反向代理
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口.
HostB ~]# ssh -CqTf -NR HostA:PortA:HostC:PortC user@HostA ## C可以为localhost
需要开启远程SSH服务器上/etc/ssh/sshd_config的GatewayPorts yes。
-D Socks5代理
HostA ~]# ssh -CqTf -ND PortA user@HostB ## 浏览器需配置socket代理:127.0.0.0: PortA
需要开启远程SSH服务器上/etc/ssh/sshd_config的GatewayPorts yes。
.ssh目录说明
[root@dewan01 ~]# cd ~/.ssh
[root@dewan01 .ssh]# ls
authorized_keys config id_rsa id_rsa.pub known_hosts
~/.ssh/id_rsa.pub
本机当前用户的公钥,可使用ssh-keygen 命令生成。
~/.ssh/id_rsa
本机当前用户的私钥,可使用ssh-keygen 命令生成。
~/.ssh/config
ssh用户配置文件(客户端),没有的话自己新建一个。
Host 后面是别名 server的话就可以通过“ssh server” 进行登录
HostName 主机名,从/etc/hosts 中读取主机名对应ip
Port 端口,默认使用22端口,此行可以省略
User 用户,默认读取当前用户,此行可以省略
IdentityFile 密钥,默认读取~/.ssh/id_rsa
~/.ssh/authorized_keys
ssh免密配置文件(服务端),没有的话自己建一个。
将自己的的公钥加入这个文件中,就可以实现免密登录。
~/.ssh/known_hosts
ssh会将访问过的机器的公钥记录在这个文件,下次如果访问同一机器(ip或主机名),会去校验机器公钥是否一致。
不进行公钥确认的办法:
将 StrictHostKeyChecking no 加入config文件中
或者在ssh命令行中使用 -o “StrictHostKeyChecking no” 参数。
~/.ssh/rc
当用户登录后, 运行 shell (或命令)前, 执行这个文件中的命令.
对应系统级配置文件:/etc/ssh/sshrc
过滤查看ssh的配置文件
cat /etc/ssh/sshd_config | grep -v \# | grep -v "^\s*$"
链接慢的问题
- 修改 /etc/ssh/sshd_config
UseDNS no
- 修改 /etc/ssh/ssh_config、/etc/ssh/sshd_config
GSSAPIAuthentication no
- 如果使用主机名登录,检查/etc/hosts、/etc/hosts.allow和/etc/hosts.deny文件
解决地址解析慢的问题。
将本地SSH公钥复制到远程主机,开启免密登录
ssh-copy-id username@hostname
或者
cat ~/.ssh/id_rsa.pub | ssh user@machine "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys"