简介
SSH(安全外壳协议)是一种加密的网络协议,用于在两个计算机系统之间建立安全连接。它常用于远程访问和控制 VPS 服务器(虚拟专用服务器)。本文将指导您如何使用 SSH 在本地计算机和 VPS 服务器之间创建安全连接。
先决条件
- 一台本地计算机,安装了 SSH 客户端(例如 PuTTY、OpenSSH 或 Terminal)
- VPS 服务器的 IP 地址或域名
- VPS 服务器的用户名和密码(或 SSH 密钥)
连接步骤
1. 生成 SSH 密钥对(可选)
使用 SSH 密钥对比使用密码更安全,因为它可以消除暴力破解攻击。要生成 SSH 密钥对,请使用以下命令:
ssh-keygen -t rsa
这将生成一对密钥文件:一个公钥(id_rsa.pub)和一个私钥(id_rsa)。
2. 将公钥添加到 VPS 服务器
将公钥添加到 VPS 服务器以授权您的本地计算机。使用以下命令,将公钥复制到服务器的 ~/.ssh/authorized_keys 文件:
ssh-copy-id username@server_ip
将 "username" 替换为您的 VPS 服务器用户名,并将 "server_ip" 替换为服务器的 IP 地址。
3. 建立 SSH 连接
使用 SSH 客户端建立到 VPS 服务器的连接。如果您使用的是 PuTTY,请按照以下步骤操作:
- 打开 PuTTY 应用程序。
- 在 "主机名(或 IP 地址)" 字段中,输入 VPS 服务器的 IP 地址或域名。
- 在 "端口" 字段中,输入服务器的 SSH 端口(通常为 22)。
- 选择 "SSH" 作为连接类型。
- 点击 "打开" 按钮。
- 如果您正在使用 SSH 密钥对,PuTTY 将提示您输入私钥的密码。
- 您现在应该连接到 VPS 服务器。
使用 OpenSSH 或 Terminal 的步骤类似。
使用 SSH 命令
连接到 VPS 服务器后,您可以使用 SSH 命令与服务器进行交互。以下是一些常见的命令:
- ls:列出当前目录中的文件和目录
- cd:更改当前目录
- mkdir:创建新目录
- touch:创建新文件
- nano:使用文本编辑器编辑文件
- sudo:以超级用户权限执行命令
断开 SSH 连接
要断开 SSH 连接,请使用以下命令:
exit
这将关闭 SSH 会话并返回您到本地计算机的命令提示符。
安全注意事项
- 定期更新 SSH 客户端和服务器软件以修补安全漏洞。
- 使用强密码或 SSH 密钥对。
- 启用双因素身份验证以增加安全性。
- 禁用 root 登录以防止暴力破解攻击。
- 监视 SSH 日志以检测可疑活动。
结论
通过使用 SSH,您可以安全地从本地计算机远程访问和控制 VPS 服务器。如果您按照本文中的步骤操作,您将能够建立一个安全可靠的连接。请务必遵循安全注意事项以确保您的连接免受未经授权的访问。
如何保证VPS SSH登录的安全?
1. 更换sshd端口2. 禁用ssh密码登录,仅使用证书登录 VPS默认的SSHD服务开启在22端口,互联网上有很多所谓的“hacker”时刻用ssh扫描工具扫描IP上的22端口,然后用字典工具尝试是否有类似于“123abc”这样的若密码,一旦您的root密码是弱密码的话,您的VPS就会成为“肉鸡”。
下面Hi-VPS介绍几种简单的方法来保护您的VPS SSH安全。
1. 更换sshd端口 最简单的办法就是更改sshd默认的22端口,这样ssh扫描工具就以为这个IP上并没有开启sshd服务。
sed -i -e s/Port 22/Port / /etc/ssh/sshd_config 运行上面的命令就把ssh的默认端口改为,然后需要重启sshd服务,生效更改: service sshd restart 这样就能在很大程度上解决VPS的ssh被扫描的风险。
只需在ssh登录软件上把默认的ssh端口也改为即可。
2. 禁用ssh密码登录,仅使用证书登录(使用证书登录SSH操作比较麻烦,一般用户在更改默认sshd端口后既可以抵挡一般性的ssd扫描,在不设置ssh证书的前提下也能在很大程度上增加系统的安全性) 使用ssh私钥登录而不使用密码登录,能在更大程度上保证ssh的安全。
(1) 创建私钥 可以用putty自带的“PUTTYGEN”来创建私钥,PUTTYGEN就在putty的目录下面,双击运行后弹出界面. 点击界面中的Generate按钮,开始生成一个私钥,在过程中鼠标要不停的随机移动产生足够的随机数来帮助生成高强度的私钥: 组后生成的私钥就是一个很长的随机字符串,然后输入私钥密码提示(防止你忘了私钥密码),私钥密码: 先在复制生成的私钥字符串,然后点击save private key来保存私钥. (2) 上传私钥至VPS 先通过ssh登录后,运行如下命令创建ssh服务端配对私钥: mkdir -p $HOME/ && touch $HOME//authorized_keys \ && chmod go-w $HOME $HOME/ $HOME//authorized_keys && vim $HOME//authorized_keys 在VIM中按o(小写),然后右键(通过putty登录ssh的时候,putty右键表示复制内容),刚才的私钥密码就复制进去了,然后按Esc,按两次大写字母Z,保存退出. (3) 在putty中导入私钥 点击“Broser”按钮,导入私钥: 然后设置自动登录用户,这就不用每次都输入登录用户名了: OK,保存session 导入私钥后,再登录putty就可以直接输入比较简单的私钥密码了,不用输入几十位原始密码. (4) 禁用VPS的SSHD的密码登录 首先需要编辑sshd_config文件: vim /etc/ssh/sshd_config 把PasswordAuthentication yes这一行改为: PasswordAuthentication no 然后重启ssh服务: service sshd restart(5) 使用PAGEANT代理私钥 如果您有好几台VPS需要管理,就可以用使用PAGEANT,每次甚至不用输入私钥密码就能登录. 运行,导入你刚才保存的私钥文件,PAGEANT会让你输入私钥密码,输入后PAGEANT就待在右下角任务栏中,如果需要连接那个ssh,就右键点击PAGEANT,从saved sessions中选择,直接登录.
为Linux系统的VPS服务器开启SSH密钥登录的方法
为了vps的安全,我开启了vps的ssh 秘钥登陆设置,通过goole搜索资料,操作成功。以下为操作记录。这里假设以root身份,vps的ip为192.168.0.1
第一步:产生秘钥即keys
基本上vps都是ssh密码登陆,首先是产生秘钥,分为公钥和私钥(public key和private key),公钥是放到vps上的,私钥放到自己这里,用于自己远程登录用的,产生秘钥方法有多种
第一种最简单,即通过vps自身产生秘钥
代码如下:
#ssh-keygen -t rsa //这里同是产生公钥和私钥
以下为输入命令后产生的输出:
代码如下:
Generating public/private rsa key pair.
Enter file in which to save the key (/root//id_rsa): //这里表示秘钥存放地点,直接回车
Created directory /root/. //默认创建/root/以保存秘钥
Enter passphrase (empty for no passphrase): //输入密钥密码,可以直接回车
Enter same passphrase again: //重复密钥密码,可以直接回车
Your identification has been saved in /root//id_rsa. //提示公钥和私钥已经存放在/root //目录下
Your public key has been saved in /root//id_.
#cd /root//
id_ id_rsa //可以看到两个秘钥,将这两个保存好,将私钥拷贝到本地
#mv id_ authorized_keys //将公钥改名为authorized_keys
#chmod 600 /root//authorized_keys //修改秘钥的权限,600表示属主有rw权限
当然如果本地自己是用linux则生成的秘钥,要将公钥拷贝到vps上,并修改名字和权限
#scp id_ root@192.168.10.1:/root/
#mv id_ authorized_keys //这里是改名字,是在/root/目录下操作
第二种方法
用xshell产生秘钥。这里强烈推荐xshell+xftp,十分好用,可以同是管理多个vps,支持多个shell窗口
第二步:用秘钥登陆
因为我们弄好后要测试ssh秘钥登陆,看是否设置成功,如果没成功还能密码登陆,所以修改后一定要测试下,对于vps提供商提供了console的,倒是 可以随意整,毕竟还有console可以用,倘若没有,建议先测试,我就是忘了添加另外一个管理员账户,而自己又禁止了root远程登登陆,导致所有客户 端都登陆不上,还好我有console,修改sshd_config配置,允许root远程登录,才搞定了,以下相当于登陆测试。
首先可以用winscp将公钥拷贝到远程的linux服务器上即vps,记得名字要改成authorized_keys
自己用私钥和vps上的公钥配对,配对成功就登陆了。
必须修改/etc/ssh/sshd_config 文件,将RSAAuthentication 和 PubkeyAuthentication 后面的值都改成yes ,保存
代码如下:
#/etc/init.d/sshd restart //再重启sshd服务,我的是centos
用秘钥登陆也有很多种,看你喜欢用什么客户端了,
第一种,是用putty登陆,用putty登陆有点要注意的是要转换秘钥,大家可以参考军哥教程。特别要注意问题就是,putty官网的puttygen转换后的秘钥有问题,登陆时候会出现“Server refused our key”错误。
解决的办法是用winscp官网下载的winscp安装程序自带的puttygen来转换秘钥,就可以正常登陆了。
我的转载的putty,winscp教程,适合新手
第二种,用xshell登陆。我是用xshell,大家可以参考军哥教程
第三种,用linux登陆vps
代码如下:
#chmod 600 id_rsa //将本地的私钥改成rw权限
#ssh root@192.168.0.1 /root/id_rsa //id_rsa为私钥,根据自己的私钥路径写
三种登陆过程可能都会提示你填写秘钥密码,填上就可 以登录成功了。
测试ssh秘钥登陆成功后,就可以设置一些更安全的配置,如
代码如下:
PasswordAuthentication no //表示禁止密码口令登陆
permitrootlogin no //表示禁止root远程登录
SSH是什么?
是一种加密的网络传输协议。
可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
使用频率最高的场合类Unix系统,但是Windows操作系统也能有限度地使用SSH。2015年,微软宣布将在未来的操作系统中提供原生SSH协议支持,Windows10 1809 版本已提供可手动安装的OpenSSH工具。
扩展资料
ssh结构
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。 用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。
1、服务端是一个守护进程(daemon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。
2、客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。
3、他们的工作机制大致是本地的客户端发送一个连接请求到远程的服务端,服务端检查申请的包和IP地址再发送密钥给SSH的客户端,本地再将密钥发回给服务端,自此连接建立。SSH 1.x和SSH 2.x在连接协议上有一些差异。
SSH被设计成为工作于自己的基础之上而不利用超级服务器(inetd),虽然可以通过inetd上的tcpd来运行SSH进程,但是这完全没有必要。
启动SSH服务器后,sshd运行起来并在默认的22端口进行监听(你可以用 # ps -waux | grep sshd 来查看sshd是否已经被正确的运行了)如果不是通过inetd启动的SSH,那么SSH就将一直等待连接请求。当请求到来的时候SSH守护进程会产生一个子进程,该子进程进行这次的连接处理 。