查看ssh服务是否开启
命令
ssh命令
SSH命令
选项 | 参数 | 含义 |
---|---|---|
–46AaCfGgKkMNnqsTtVvXxYy | 查看软件版本等信息 | |
-b | bind_address | 绑定ip地址,如xxx.xxx.xxx.xxx |
-c | cipher_spec | |
-D | [bind_address:]port | |
-E | log_file | 指定日志文件xxx//xx//xx.log |
-e | escape_char | |
-F | configfile | 指定配置文件 |
-i | identify_file | 认证文件 |
-J | [user@host[:port]] | |
-L | address | |
-l | login_name | |
-m | mac-spec | |
-O | ctl-cmd | |
-o | option | |
-p | port | 指定端口,默认22 |
-Q | query_option | |
-R | address | |
-S | ctl-path | |
-W | host:port | |
-w | local_tun[:remote_tun] | |
[user@]hostname [command] | 用于客户端连接服务器 |
版本等信息
注意
user
是远程服务器登录的用户名,默认为当前用户hostname是
远程服务器地址,可以是IP/域名/别名exit/logout
命令均可退出当前登录
接下来,展示一下连接ssh服务器
Windows连接Ubuntu
可以看到,使用SHA256进行了校验,生成了一个指纹,我们关闭连接,重连一次。
再次连接
再次连接,可以发现,已经没有了校验显示,输入密码后直接登录,稍微简便了一点。那么,校验记录存在哪呢?
cd ~/.shh
cat known_hosts
Windows下校验记录
第一条是我的GitLab的,就划掉了,第二条是刚才连接的。
Linux下校验记录
在~/.ssh/known_hosts文件中可以看到。接下来,我们就来详细看看一些配置。
高级配置
Linux下,ssh配置信息都保存在~/.ssh
中
配置文件 | 作用 |
---|---|
known_hosts | 作为客户端。记录曾连接服务器授权。ssh第一次连接一台服务器会有一个授权提示,确认授权后会记录在此文件中,下次连接记录中的服务器时则不再需要进行授权确认提示 |
authorized_keys | 作为服务端。客户端的免密连接公钥文件 |
config | 作为客户端。记录连接服务器配置的别名 |
后两个默认是不存在的,需要手动创建。下面Windows中也是仅有known_hosts文件的,另外两个是我给GitLab配置密钥文件时创建的。
Windows下
Windows下内容
服务器别名
每次都写IP地址,但是IP地址比较难记,我们可以去一个别名。新建一个config文件,内容如下:
Host Ubuntu
HostName 10.28.214.174
User llvm
Port 22
config文件
其中,Port可以不写,默认就是22端口。
别名登录
免密登录
通过以上,我们即可通过别名和密码登录了,但是每次都输入密码,比较麻烦,接下来我们看看免密登录。
客户端生成密钥对
ssh-keygen
参数
我一般是不用参数的,它会给一些提示,我一般全部按Enter,选择默认,这次由于文件路径名字重复,才改了一个。上面的参数,博主只感觉-t参数比较有用,但是密码学学的也不好,默认的rsa加密方式也很好,一般也是默认。
生成密钥文件
查看密钥文件
上传公钥到服务器
ssh-copy-id user@hostname
windows下没有这个命令,只能手动了。使用这个命令其实是将公钥追加到了服务器的authroized_keys文件中,我们把文件放到Ubuntu中,使用命令追加一下。
公钥上传成功
接下来,我们就可以使用密钥文件登录了
ssh -i id_rsa_ubuntu Ubuntu
密钥文件登录
还是有点麻烦,需要记着服务器需要使用哪个对应的私钥。我们再配置一下,添加私钥文件:
IdentityFile C:\Users\DELL\.ssh\id_rsa_ubuntu
配置密钥文件
好啦,至此,我们可以只是用一个别名就能登录了:
ssh Ubuntu即可登录,无需密码
当然,我们只是为了学习一下ssh,平时博主也直接使用MobaXterm、Xshell等软件直接连接,有工具的话会节省很多时间。
对于GitHub、GitLab等也会使用密钥文件的方式,将公钥上传到服务器即可。
GitLab上传页面
以GitLab为例,可以看到,要求上传ssh-rsa或ssh-ed25519的公钥。客户端生成密钥对时,可以使用-t参数,选择ed25519,也可使用默认的rsa方式。
安全性
- 有效防止远程管理过程中的信息泄漏
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!