如何SSH连接一台服务器(电脑)
编辑
一、SSH是什么
这里借用维基百科的解释:安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道)来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。SSH使用频率最高的场合是类Unix系统,但是Windows操作系统也能有限度地使用SSH。2015年,微软宣布将在未来的操作系统中提供原生SSH协议支持,Windows10 1803版本已提供OpenSSH工具。SSH的经典用途是登入到远程电脑中执行命令。除此之外,SSH也支持隧道协议,端口映射和X11连接。借助SFTP或SCP协议,SSH还可以传输文件。
简单来说,ssh就是让你可以远程登录一台设备,来远程执行一些命令。
这个远程连接,可以连接各种各样的设备,实际上最常用到的是在我们连接linux服务器的时候,直接进行ssh连接即可对服务器进行一切操作,但是其实windows也是支持我们去ssh连接的,使用powershell就可以对远程设备进行连接,但是要连接到一台windows设备的话,还是需要我们去开启openssh的服务端,因为默认是关闭的。
那么,我们应该如何连接呢?
二、如何连接
首先,你要知道服务端也就是你要链接的呢台电脑的IP地址,而且只能是公网IP或者你局域网中的内网IP。一般购买云服务器之后都会告诉你一个公网IP,使用这个IP地址就可以连接到你的服务器。
IP地址:简单来说,IP地址就是每一台入网电脑的身份证号,但是由于现在全世界的人数太多,所以IP地址不够分了,不是每一台电脑都能分到公网的IP地址。比如一般家用电脑,他只会有一个你路由器分发的内网IP,所以导致我们不能在其他地方直接连接你家里的家用电脑。如果想要连接,我们就需要配置一些例如frp这样的工具,把你家用电脑的某个端口,映射到有公网IP的设备上,具体可以看这个frp教程
知道了IP地址之后,ssh连接就非常简单,只需要一条命令:
ssh user@host
其中,user
表示你登录要使用的账户(服务端的账户),host
表示服务端的IP地址
SSH服务的默认端口是22,也就是说,如果你直接以上面的命令连接的话,会自动连接到远程主机的22端口。如果你要链接的呢太服务端的ssh端口不是22的话,比如配置了frp内网穿透,我们可以使用 -p 选项来修改端口号,比如连接到服务器的6000端口:
ssh user@host -p 6000
如果是第一次登录远程主机,系统会给出一个公钥指纹的提示,就是说没见过这个设备,是否要继续链接,输入yes
就可以了。
接着会让你输入密码,这里的密码就是服务端你连接的账户的密码,如下图所示
在你输密码的时候,不会显示任何东西,你只管放心输,完了按回车就好
回车之后,密码什么的都没问题,就会进入这个服务端的命令行窗口,你在这里操作,就相当于在本机上进行操作。
需要注意的是,如果要windows电脑,你首先要确保这台电脑开启了opensshd服务,也就是服务端服务。
首先需要用管理员身份启动 PowerShell,使用如下命令看一下,要确保 OpenSSH 可用于安装:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
输出应该是类似的结果:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
如果你安装过,那么应该两个State都是Installed,你就可以跳过后面的安装部分,直接连接了。
然后使用 PowerShell 安装服务,运行下面的命令 即可:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
输出结果类似:
Path :
Online : True
RestartNeeded : False
这样就可以完成 OpenSSH 的安装。
安装完成之后,就需要进行一些初始化配置了,还是以管理员身份,使用 PowerShell 执行即可。
首先需要开启 SSHD 服务:
Start-Service sshd
然后设置服务的自动启动:
Set-Service -Name sshd -StartupType 'Automatic'
三、免密登录(公钥登录)
这里对公私钥的概念不做介绍了,感兴趣的话可以自行百度一下。
之前的每次登录都会要求你输入密码,会比较麻烦,所以可以配置免密登录,这样每次登录直接就能连接,而不需要输入密码,步骤也很简单。
1.生成公钥和私钥
在命令行中输入:ssh-keygen
ssh-keygen
连续回车或者根据提示确定生成的私钥公钥存放的路径。默认(就是一路回车)会在C:/user/用户/.ssh
目录下生成公钥和私钥。 id_rsa:私钥 id_rsa.pub:公钥
这个私钥就是你自己的钥匙,公钥就是你要给出去的钥匙。
2. 将公钥拷贝到服务器
在服务器命令行中输入
ssh-keygen
回车(生成服务器的公私钥)完成后会在用户目录下生成 .ssh目录(输入 ls -a查看)
进入ssh目录
cd .ssh
将客户端的公钥(也就是刚刚在我们本地电脑生成的id_rsa.pub)添加到 authorized_keys文件:
可以vim authorized_keys直接将Windows上自己生成的id_rsa.pub的内容拷贝过去 注意:如果没有 authorized_keys文件的话,用 touch authorized_keys创建一个,创建后权限改为 600
如果是linux服务器也可以直接使用命令:
ssh-copy-id -i <path_to_public_key> user@remote_server
替换
<path_to_public_key>
为本地公钥文件的路径,user
为远程服务器的用户名,remote_server
为远程服务器的IP地址或主机名。这段命令会自动添加你本地的公钥到authorized_keys
,并且如果authorized_keys
文件不存在,则会自动创建。如果已存在,那么公钥将被追加到文件的末尾。windows端没有快捷操作,需要手动去
C:/user/用户/.ssh
目录中,有一个authorized_keys文件,注意这里是没有后缀名的,如果没有就自己创建一个,然后把在客户端生成的公钥,也就是id_rsa.pub里面的内容,全部复制到authorized_keys最后面,注意是全部,不要忘了rsa。
之后再继续增加免密登录的设备的话,就继续往authorized_keys文件中复制公钥就可以了。
4. 重启ssh服务
linux端直接执行下面的命令
systemctl restart sshd
window端就去计算机管理,找到里面的服务,然后找到之前安装的openssh服务端,右键重启他就可以了
配置好之后,链接时就可以不用输入密码了。
其实github的ssh连接也是类似的,把你的公钥拷贝到github的设置中就可以喽~~
- 2
- 0
-
分享