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
// root 登录同理
ssh deploy@39.106.10.228
deploy登录39.106.10.228,远程端口8099
ssh -p 8099 deploy@39.106.10.228
当前用户登录39.106.10.228
ssh 39.106.10.228
ssh免密码登录
ssh免密码登录需要生产一对私钥和公钥
ssh-keygen -t rsa
将公钥复制远程服务端的 .ssh/authorized_keys 文件中(默认是这个文件,上面讲了,这个也是可以配置的),记得配置这个文件的权限,chmod u+600,登录使用ssh -i 指定私钥文件路径,如下:
ssh -p 33339 -i licong_simulate.rsa licong@211.100.49.107
复制公钥的时候可以使使用ssh-copy-id
这个命令来copy,避免了手动在远处服务器上修改或者创建文件的麻烦
ssh-copy-id -i hack.pub root@hacking
#输入密码就完事了
ssh设置默认秘钥文件和端口
本地的~/.ssh目录下面创建config文件,文件内容格式如下
Host aliyun
Hostname
Port 22
Username hellojukay
IdentityFile ~/.ssh/myaliyun
这里指定登录远程ssh的端口是22,也可以修改成别的端口。这里同时指定登录aliyun这台机器的默认秘钥文件为~/.ssh/myaliyun。
使用ssh来进行内网穿透
ssh功能非常非常强大,和frp一样,它也能用来做内网穿透。什么是内网穿透呢,打个比方,就是我本地局域网内的一台机器能访问互联网,能够主动socket连接阿里云上的一台机器,但是因为nat的原因,阿里云上的那台机器不能主动连接我本机的机器。让局域网内的机器暴露在公网上,这个的操作就是内网穿透。比如你需要远程操作你家里的空调,小米电视机,这些都需要内网穿透。ssh内网穿透的命令如下:
ssh -fNR 7000:localhost:4000 root@aliyun
这样就把本地的4000端口暴露在aliyun的7000端口上了,访问aliyun:7000的流量会被导入到内网机器的4000端口。