ssh相关的若干技巧

     写在前面的废话。

明天就是5月15日了,锤子科技的新手机即将发布,现在这个手机已经用了一年半了,老化严重,我已经迫不及待要想换手机了。

ssh的基本操作

ssh分为ssh客户端和服务端,服务端的程序通常名字叫做sshd,服务端的配置文件一般都是/etc/ssh/sshd_config,可以配置大概有一下内容:

  • 是否允许明码登录
  • 是否允许远程主机登录
  • 绑定端口号
  • 进程id所在文件(通常不改)
  • 是否保持长连接
  • 是否允许端口转发
  • 公钥所在文件

修改之后一般执行systemctl restart sshd 或者service restart sshd(这两个命令有什么区别,请自行google)重启就能更新配置,重启过程中当前的会话不会断开(自行思考为什么不会断开)。一下是几种常规的用法:

deploy登录39.106.10.228,默认端口22

1
2
// root 登录同理
ssh deploy@39.106.10.228

deploy登录39.106.10.228,远程端口8099

1
ssh -p 8099 deploy@39.106.10.228

当前用户登录39.106.10.228

1
ssh 39.106.10.228

ssh免密码登录

ssh免密码登录需要生产一对私钥和公钥

1
ssh-keygen -t rsa

将公钥复制远程服务端的 .ssh/authorized_keys 文件中(默认是这个文件,上面讲了,这个也是可以配置的),记得配置这个文件的权限,chmod u+600,登录使用ssh -i 指定私钥文件路径,如下:

1
ssh -p 33339 -i licong_simulate.rsa licong@211.100.49.107

复制公钥的时候可以使使用ssh-copy-id这个命令来copy,避免了手动在远处服务器上修改或者创建文件的麻烦

1
2
ssh-copy-id -i hack.pub root@hacking
#输入密码就完事了

ssh设置默认秘钥文件和端口

本地的~/.ssh目录下面创建config文件,文件内容格式如下

1
2
3
4
5
Host aliyun
Hostname
Port 22
Username hellojukay
IdentityFile ~/.ssh/myaliyun

这里指定登录远程ssh的端口是22,也可以修改成别的端口。这里同时指定登录aliyun这台机器的默认秘钥文件为~/.ssh/myaliyun。

使用ssh来进行内网穿透

ssh功能非常非常强大,和frp一样,它也能用来做内网穿透。什么是内网穿透呢,打个比方,就是我本地局域网内的一台机器能访问互联网,能够主动socket连接阿里云上的一台机器,但是因为nat的原因,阿里云上的那台机器不能主动连接我本机的机器。让局域网内的机器暴露在公网上,这个的操作就是内网穿透。比如你需要远程操作你家里的空调,小米电视机,这些都需要内网穿透。ssh内网穿透的命令如下:

1
ssh -fNR 7000:localhost:4000 root@aliyun

这样就把本地的4000端口暴露在aliyun的7000端口上了,访问aliyun:7000的流量会被导入到内网机器的4000端口。