ssh

Created

2024-10-28 13:36:21

Updated

2024-10-28 13:36:24

1 密钥生成与上传

#本地 执行 ,生成密钥对
ssh-keygen

# 将公钥上传至远程服务器, 这个命令需要能用密码远程登录..
# -i 指定公钥路径
ssh-copy-id  -i ~/.ssh/id_rsa.pub  remote_user@remote_ip -p22
# 执行完后,实际会将该公钥内容 放到远程服务端上的 ~/.ssh/authorized_keys 里,
# 你可以手动将本机的公钥内容复制到这个文件里
# 注意如果是手动修改, 请确保文件权限最后是600
chmod 600 ~/.ssh/authorized_keys
#-rw------- 1 root root  393 Oct 11 22:48 authorized_keys

2 ssh快捷连接服务器

~/.ssh/config配置文件添加
Host dev
  HostName 192.168.1.100
  Port 22
  User root
  IdentityFile ~/.ssh/id_rsa
简单的命令就连接服务器
ssh dev

3 多个github账号如何连接

Note

其实和上面是一样的, 不同的github账号在github上不能使用同一个公钥,而你又需要在一个机器上提交东西到不同的github账号的仓库

# 如果不带 -f 指定文件名 ,那么回车,需要填入一个名称,否则文件名都是id_rsa ,会导致覆盖原有的 id_rsa
ssh-keygen -t rsa -C "注释信息,你可以写你的邮箱等" -f "文件名"
~/.ssh/config配置文件添加
Host gh1
  HostName github.com
  Port 22
  User root
  IdentityFile ~/.ssh/gh1.id_rsa  # 生成的私钥1

Host gh2
  HostName github.com
  Port 22
  User root
  IdentityFile ~/.ssh/gh2.id_rsa #生成的私钥2
# 需要将 根据你的仓库地址,将github.com 改成gh1或gh2
git clone git@github.com:tom/abc.git
#==> 这样就会区gh1配置里使用的密钥对,去对应的github帐号clone
git clone git@gh1:tom/abc.git

4 通过ssh隧道 连接mysql

服务器说明
  1. 远程服务器A, 这个你可以ssh连接的
  2. mysql服务器, 你无法外部访问, 服务器A可以访问mysql服务器
  3. 你想要在本地连接这个mysql, 比如用navicat直接看,怎么办呢?

navicat 本身可以设置ssh隧道. 这里我用本地映射的方式

# -f 必须带上, 表示转到后台
# 将远程的mysql端口映射到本地的3307,这样本地就可以直接连了
ssh -fN -L3307:remotemysqlip:3306 A服务器用户名@A的ip
lsof -i:3307 # 查看

5 通过堡垒机连接内部服务器

Note

一般情况下, 你需要登录网页,输入密码, 然后选择你要连接的服务器
很麻烦. 这里设置 直接本地 ssh dev 即可连接 (如果需要vpn的, 那么vpn得先连上)

配置~/.ssh/config文件 增加
Host baolei
    HostName 堡垒机ip
    User 堡垒机账户
    Port 连接堡垒机的端口
    IdentityFile ~/.ssh/id_rsa  # 上传给堡垒机公钥对应的私钥
Host dev
    HostName 堡垒机可以连接的内部服务器ip
    User 堡垒机连接内部服务器的用户
    Port 堡垒机连接内部服务器使用的端口
    #这个不需要设置 堡垒机估计已经设置 ssh 直接访问 dev服务器. 所以不用
    #IdentityFile ~/.ssh/id_rsa
    ProxyCommand ssh 堡垒机账户@baolei -W %h:%p
Back to top