ssh使用介绍

[TOC]

ssh 是用的非常频繁的工具。这里总结下我常用的。

ssh 基本使用

用户名密码连接

ssh work@192.168.11.1

默认端口22, 可以通过 -p参数指定

密钥登录

ssh -i 密钥文件 work@192.168.11.1

aws的服务器都是这种方式登录。

免密登录

在A服务器ssh免密码登录B服务器。

  1. 在B服务器上生成密钥和公钥
ssh-keygen
  1. 同步公钥到A服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@serverA

ssh 转发连内网mysql

公司用了vpn, mysql又配置了只允许内网ip链接。本地又没数据,为了方便开发,直接内网的mysql做测试(只读是没问题的,要写数据还是本地折腾个吧。), 为实现这个需求可以利用ssh隧道转发功能。

ps: 最开始利用这个功能翻过墙,后来vps把ssh转发干掉了。。。

ssh -L

建立连接的同时加入端口转发:ssh -L [本地端口]:[远程A机器IP]:[远程A机器端口] [远程B机器账户名]@[远程B机器IP]

ssh -L 13306:172.18.18.19:3306 root@172.18.18.18

这里我们的机器可以连接B,但无法连接A时,可以通过连接到B,并把本地端口映射到A上,从而访问到A机器。

这个就是我要用到的功能

SSh -R

端口转发的反向操作:ssh -R [本地端口]:[远程A机器IP]:[远程A机器端口] [远程B机器账户名]@[远程B机器IP]

ssh -R 3306:172.18.18.18:3306 root@172.18.18.18

这里的操作就相当于我将端口暴露给指定机器的指定端口,一般用在内网的机器上。如此就可以通过接口机的指定端口通过其他机器访问这台机器了。

ssh -N

不执行远程指令 ssh -N …

只要在ssh中加入-N,就相当于后台建立连接,不向远程机器发送指令,一般用于建立端口转发和代理时。

玩法介绍

  1. 开启端口转发
ssh -fN root@172.18.18.18 -L 13306:172.18.18.19:3306
# -fN:后台运行;不执行命令,只负责转发。
# root:跳板机B的用户名。
# 172.18.18.18:跳板机B的ip地址。
# -L:本地端口转发。
# 13306:监听的本地端口。
# 172.18.18.19:mysql服务器地址。

  1. 修改连接mysql方式
mysql -h 127.0.0.1 -P 13306 -u root -p

另外:SecureCRT 也支持这个功能。