一、SSH简介
SSH(Secure Shell)是一种网络协议,用来在不安全的网络中安全地传输数据。SSH服务器允许用户通过SSH协议对它进行登录和操作。 SSH协议将网络中的所有通信都进行了加密。这意味着即使别人能够在网络上截获你的数据,他们也无法读取数据的内容。此外,SSH还使用了安全隧道,可以将其他协议(如FTP和VNC)通过SSH连接转换成加密协议。 使用SSH协议的最大好处就是:你不需要在不信任的网络中担心网络攻击,因为你的数据都是加密的。
二、SSH登录
SSH登录是远程连接到目标服务器执行命令的最基本方式。下面是一个基础的SSH登录示例:
ssh username@hostname
其中,username是你的用户名,hostname是目标服务器的主机名或IP地址。当你在本地运行这个命令时,你将要连接到hostname服务器,并使用username作为登录用户名。在连接过程中,你需要输入你的密码才能登录成功。 SSH连接可以使用多种方式进行身份验证,常见的有以下几种:
三、SSH密钥
SSH密钥是SSH连接时进行身份验证的一种方式。它是一个由两个文件组成的密钥对:私钥和公钥。 私钥需要保存在本地电脑上,而公钥则需要上传到服务器上。当熟知私钥的用户试图连接到服务器时,服务器将会请求他传送一些数据。这些数据将会被用公钥解密,以便服务器确认客户端的身份。 可以使用下面的命令生成一个SSH密钥:
ssh-keygen -t rsa -b 2048
接下来将会提示你输入存储密钥的文件名和密码。一般来说,只需要按回车默认即可。 生成公钥之后,使用下面的命令在服务器上将公钥添加到你的SSH用户中:
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfhdJNYNTo0...[your key content]...MN0qv" >> ~/.ssh/authorized_keys
将公钥添加到你的SSH用户后,你就可以使用私钥安全地连接到这个服务器上。
四、SSH代理
SSH代理是一种SSH连接的扩展,它可以让你在远程服务器之间进行无缝连接。当你需要连接到不同的服务器时,你不需要每次都重新连接到每个服务器上,而是可以通过代理服务器来连接到不同的服务器上。 在本地电脑上,先使用下面的命令创建代理连接:
ssh -D 8000 username@hostname
然后你就可以使用这个代理来在远程服务器之间连接:
ssh -o ProxyCommand='nc -x localhost:8000 %h %p' username2@hostname2
此命令将通过代理连接到hostname2服务器,并使用username2作为登录用户名。
五、SSH跳板机
SSH跳板机也称为SSH跳跃,它是一种限制性防火墙或运维安全限制的情况下,通过跳板机访问内部服务器的方法。SSH跳板机工作的原理是在跳板机上建立一个隧道,把内部主机的端口连接到外网的端口上。 使用下面的命令进行SSH跳板机连接:
ssh -t username@hostname ssh username@internalhostname
这个命令将首先连接到跳板机上,然后通过跳板机连接到youserver2上。
六、SSH文件传输
使用scp命令可以在本地电脑和SSH服务器之间安全地传输文件。 将本地文件传输到SSH服务器:
scp /path/to/local/filename username@hostname:/path/to/remote/
从SSH服务器传输文件到本地电脑:
scp username@hostname:/path/to/remote/filename /path/to/local/
七、SSH端口转发
SSH端口转发是一种在不同网络环境之间访问网络资源的安全方法。它利用SSH的安全通道来连接到跨越两个不同网络的计算机。 使用下面的命令在localhost上将remotehost:3306的端口转发到本地的3306端口:
ssh -L 3306:localhost:3306 username@remotehost
完成转发后,你就可以使用localhost的3306端口连接到remotehost的3306端口了。
八、SSH隧道
SSH隧道是一种通过SSH连接到远程服务器上的服务,并将其转发到本地电脑上的方法。通常,SSH隧道用于连接到远程服务器上的数据库或其他网络资源。 打开MySQL隧道,将remotehost服务器的3306端口连接到本地电脑的3306端口:
ssh -L 3306:localhost:3306 username@remotehost -N
连接完成后,你可以从本地电脑上连接到MySQL数据库了。