【ssh基础知识】
ssh(ssh客户端)是一个用于登录到远程机器并在远程机器上执行命令的程序。
它旨在提供安全的加密通信在不安全的网络上的两个不受信任的主机之间。X11连接、任意TCP端口和UNIX域套接字也可以通过安全通道进行转发。
常用命令
ssh user@hostname
-l:用户名也可以使用ssh的-l参数指定,这样的话,用户名和主机名就不用@写在一起了。
ssh -l username host
-p:指定端口,ssh默认端口是22,如果需要指定其它端口就需要使用-p 端口号
ssh -p 9022 user@hostname
登录流程
如果首次连接一台服务器,会收到下面这段信息,主要显示服务器指纹和MD5,并询问是否继续连接
[root@localhost ~]# ssh -l root 192.168.33.11
The authenticity of host '192.168.33.11 (192.168.33.11)' can't be established.
ECDSA key fingerprint is SHA256:EqwKUqtyrlB8QR82eSreSs+542WqvmGWEE+PSilKKKI.
ECDSA key fingerprint is MD5:19:1b:c1:4c:1d:61:56:e7:ff:5b:15:41:74:02:be:a4.
Are you sure you want to continue connecting (yes/no)? yes
输入yes,就可以将当前连接服务器的指纹储存到本机~/.ssh/known_hosts文件中。以后再连接的时候,就不会再出现警告了。
然后,客户端就会跟服务器建立连接。输入所要登录账户的密码。用户输入并验证密码正确以后,就能登录远程服务器的 Shell了。
# 执行远程命令
ssh username@hostname command
# 需要互动式的 Shell 环境
ssh -t username@hostname command
配置文件
SSH 客户端的全局配置文件是/etc/ssh/ssh_config,用户个人的配置文件在~/.ssh/config,优先级高于全局配置文件。
除了配置文件,~/.ssh目录还有一些用户个人的密钥文件和其他文件。下面是其中一些常见的文件。
- ~/.ssh/id_ecdsa:用户的 ECDSA 私钥。
- ~/.ssh/id_ecdsa.pub:用户的 ECDSA 公钥。
- ~/.ssh/id_rsa:用于 SSH 协议版本2 的 RSA 私钥。
- ~/.ssh/id_rsa.pub:用于SSH 协议版本2 的 RSA 公钥。
- ~/.ssh/identity:用于 SSH 协议版本1 的 RSA 私钥。
- ~/.ssh/identity.pub:用于 SSH 协议版本1 的 RSA 公钥。
- ~/.ssh/known_hosts:包含 SSH 服务器的公钥指纹。
ssh密钥登录
SSH 密钥登录分为以下的步骤。
预备步骤,客户端通过ssh-keygen生成自己的公钥和私钥。
第一步,手动将客户端的公钥放入远程服务器的指定位置。
第二步,客户端向服务器发起 SSH 登录的请求。
第三步,服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。
第四步,客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。
第五步,服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。
生成密钥
ssh-keygen
-t参数,指定密钥的加密算法
ssh-keygen -t dsa
-t参数用来指定密钥的加密算法,一般会选择 DSA 算法或 RSA 算法。如果省略该参数,默认使用 RSA 算法。
上传公钥
方法1:
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
chmod 644 ~/.ssh/authorized_keys
方法2:
ssh-copy-id -i key_file username@hostname
关闭密码登录
vi /etc/ssh/sshd_config
对于 OpenSSH,具体方法就是打开服务器 sshd 的配置文件/etc/ssh/sshd_config,将PasswordAuthentication这一项设为no。
PasswordAuthentication yes
ssh服务管理
# 启动
systemctl start sshd.service
# 停止
systemctl stop sshd.service
# 重启
systemctl restart sshd.service
查看日志
# 查看服务日志
journalctl -u ssh
# 查看系统日志
tail -f /var/log/auth.log
# 查看登录详细
lastlog
ssh端口转发
ssh -l proxy -p1022 -qngfNTR 1023:localhost:1022 192.168.10.11 -o ServerAliveInterval=10
参数详解:
-l proxy:指定用户proxy,推荐默认非root用户
-p1022:中转机器A的ssh端口
-qngfNTR:静默模式、后台执行ssh指令、不执行远程指令、不要求分配终端、允许远程主机连接主机的转发端口
1023:localhost:1022:配置转发端口:本机:本机ssh端口,注意本机端口需要在ssh配置文件中添加
192.168.10.11:中转机器A的内网IP
-o ServerAliveInterval=10:是让客户端每10s发送一个心跳保持隧道的链接,否则这条连接很容易被重置
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!