摆烂式学习ssh
- ssh工作原理
- ssh基本使用
- sshd配置文件
- 密钥登录
- 1.客户端
- 2.服务器
- 3.注意事项
- 4.使用密钥登录测试
- ssh高级使用技巧
- 1.在非正规端口启动
- 2.rsync 命令
- 3.透过 ssh 通道加密原本无加密的服务
- 4.以ssh信道配合x server 传递图形接口
- 5.ssh配合virtualbox虚拟机使用技巧
ssh工作原理
后续补充
ssh基本使用
后续补充
sshd配置文件
ssh服务器配置文件是/etc/ssh/sshd_config
,大多数配置选项默认配置即可.
StrictModes yes
#这个选项非常重要,使用密钥登录时,会检查家目录和配置文件的权限,参考后面密钥登录说明PasswordAuthentication yes
#这个选项选择是否可以使用用户名和密码登录
密钥登录
1.客户端
在客户端生成密钥
#1.查看客户端可以生成哪些类型密钥ssh-keygen --help[-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
#2.查看服务器支持哪些类型密钥
#sh_host_*为服务器支持的密钥类型
tree /etc/ssh/
/etc/ssh/
├── moduli
├── ssh_config
├── sshd_config
├── ssh_host_ecdsa_key
├── ssh_host_ecdsa_key.pub
├── ssh_host_ed25519_key
├── ssh_host_ed25519_key.pub
├── ssh_host_rsa_key
├── ssh_host_rsa_key.pub
└── ssh_import_id#3.生成密钥
#选择客户端和服务器端都支持的密钥类型
#-t: 指定密钥类型
ssh-keygen -t ed25519Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\pc/.ssh/id_ed25519): #建立密钥文件,直接回车
Created directory 'C:\\Users\\pc/.ssh'. #目录不存在,自动建立
Enter passphrase (empty for no passphrase): #对密钥进行加密,直接回车,不加密
Enter same passphrase again: #回车
The key fingerprint is:
SHA256:CZXwmJisbe+Tg7iyllsNF49RGin+NdFdyVDELiKkzTM pc@DESKTOP-1RI3V9O
The key's randomart image is:
+--[ED25519 256]--+
| .ooo...B+. |
| o ++B.. . + |
| . =+O o . |
| + .=E o . . |
| ..+o..S . . |
| .+o |
| .o o.. |
|.oo ..+ |
|o+o. .o |
+----[SHA256]-----+
查看生成的密钥文件
cd .\.ssh\
PS C:\Users\pc\.ssh> ls目录: C:\Users\pc\.sshMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2023/12/29 19:30 411 id_ed25519 #私钥
-a---- 2023/12/29 19:30 101 id_ed25519.pub #公钥
2.服务器
到需要登录的账号的家目录下.
#1.建立目录~/.ssh
mkdir ~/.ssh#2.把客户端公钥复制到服务器客户家目录.ssh目录下
#windows11下的命令,linux相似
scp .\id_ed25519.pub lei@u18:\home\lei\.ssh#3.把公钥存储到authorized_keys文件中
cd /home/lei/.ssh
cat id_ed25519.pub >> authorized_keys#4.~目录其他用户权限不能有写权限即可
chmod 775 -R ~
#只要其他用户的权限没有写权限就可以
chmod 700 -R ~
3.注意事项
服务器上要登录的目录其他用户权限一定不能是写权限,否则密钥登录失败!
还有另外一种解决办法,就是修改配置文件 vim /etc/ssh/sshd_config
StrictModes no
这一点很重要.
网络上很少有说明这一点的地方.查看man sshd_config
可以明白这一点.
StrictModesSpecifies whether sshd(8) should check file modes and ownership of the user's files and home directory before accepting login. This is normally desirable because novicessometimes accidentally leave their directory or files world-writable. The default is yes. Note that this does not apply to ChrootDirectory, whose permissions and owner‐ship are checked unconditionally.
4.使用密钥登录测试
使用工具MobaXterm,测试可以使用密钥登录.
使用powershell或cmd测试
ssh lei@u18
#不需要密码直接登录
ssh高级使用技巧
1.在非正规端口启动
#vim /etc/ssh/sshd_config
#可以有多个端口一起使用
Port mmm
Port nnn#使用
ssh -p portnumber username@hostname
2.rsync 命令
会产生比较, 只copy更新或不存在的文件和目录
例子:
#1.本地使用
sudo rsync -av /etc/ testdir/#2.将server上的/etc复制到本地/tmp中
rsync -av -e ssh user@server:/etc /tmp
rsync 语法
rsync [-avrlptgoD][-e ssh][user@host:/dir][/local/path]
#-v: 观察模式,可以列出更多的信息,包括镜像时的档案名称等;
#-q: 与 -v 相反, 安静模式, 略过正常信息, 仅显示错误讯息;
#-r: 递归复制
#-u: 仅更新(update),若目标档案较新,则保留新档案不会覆盖;
#-l: 复制链接文件的属性,尔非链接的目标源文件内容;
#-p: 复制时,连同属性(permission)也保存不变;
#-g: 保存源文件的拥有群组;
#-o: 保存源文件的拥有人;
#-D: 保存源文件的装置属性(device)
#-t: 保存源文件的时间参数;
#-l: 忽略更新时间(mtime)的属性,档案比对上会比较快速;
#-z: 在数据传输时,加上压缩的参数;
#-e: 使用的通道协议,例如使用ssh通道, 则 -e ssh
#-a: 相当于 -rlptgoD, 所以这个-a是最常用的参数
3.透过 ssh 通道加密原本无加密的服务
后续补充
4.以ssh信道配合x server 传递图形接口
后续补充
5.ssh配合virtualbox虚拟机使用技巧
把四个虚拟网卡都打开.例如下图,网卡1用于连接嵌入式板卡用于开发,网卡2连接无线路由器用于上网,网卡3用于仅主机网络用于在图书馆等地方本地电脑连接ubuntu主机学习或工作,网卡4设置成NAT方式用于其他应用.
为了登录方便使用以下方式登录
- 使用hostname登录,这样就不要记住IP地址了,例如 ssh username@hostname
- 尽量可能的情况下设置成DHCP方式,换个环境就不需要设置IP地址了.
- 配置成密钥登录方式,这样登录时就不需要输入密码了,特别是使用vscode远程开发linux项目时,vscode可以省去许多中间输入密码的提示.
以上设置保证不管把电脑拿到何处,都不需要重新配置网络,同时调试嵌入式板卡时,还能同时上网安装软件.