如何使用ssh登陆windows服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ssh登陆windows服务器相关的知识,希望对你有一定的参考价值。
参考技术A 1. ssh简介以及本例的应用场景① ssh的简介
SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的权益,推广SSH是必要的。 SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。
② 本例的应用场景
用户在client(Linux)上通过ssh远程执行server(Windows)上的命令,比如c:\test.bat
注:Linux版自带ssh Server且默认启动,具体设置方法请参见google。
2. ssh服务器的安装(Windows)
ssh服务器软件有许多中,我们这里使用的是免费的freeSSHd。
① 首先从官方站点下载软件并安装(http://www.freesshd.com/)
② 安装完成后进入配置界面(Server Status),确认SSH server正在运行状态
③ 进入Users界面,设定一个访问的用户账户(比如xut)
这里我们建立一个叫xut的用户,认证有3种方式可以选择。从以后通过ssh运行命令的方便(无需输入密码)考虑,我们选择Public key认证方式。选择Password方式的话,每次访问需要输入密码,此种方式较为繁琐而且安全性不高。然后开放其Shell权限。
④ 进入认证界面,确认Public key认证方式属于激活状态(选择Allowed或Required)
此时ssh服务器端的基本设置已经OK,可进一步进行更加详细的设置(比如访问限定等),此处不再介绍。
注意:服务器端如果有防护墙时应该开发TCP 22号端口最为ssh连接使用。
3. ssh客户端的设置(Linux)
由于我们的客户端采用的是Linux,所以不用安装客户端软件,系统自带的就有。
我们需要在Linux上创建一个共有和私有的密钥对,私有密钥放到客户端(Linux)上,共有密钥放到服务器端(Windows)上。在Linux上通过ssh-keygen命令来创建。
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): [直接回车]
Enter passphrase (empty for no passphrase): [直接回车]
Enter same passphrase again: [直接回车]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53
其中,/root/.ssh/id_rsa为私有密钥,/root/.ssh/id_rsa.pub为共有的密钥。
此时,需要把共有密钥放到服务器端(Windows)进行保存,以便于服务器端进行安全检查。
我们通过认证界面找到存放共有密钥的地址(Public key folder)。
如上图所示,然后在c:\Program Files\freeSSHd目录下创建以登录用户名为名字的文本文件,此处举例为xut文件。并将/root/.ssh/id_rsa.pub文件中的内容拷贝到c:\Program Files\freeSSHd\xut文件中。
至此,客户端和服务器端的密钥设置已经完成,可以通过如下命令进行远程的命令执行。
ssh xut@172.28.xx.xxx "c:\test.bat"
这条命令将执行服务器端的C盘下的test.bat文件,并把结果返回,整个操作不需输入密码。
4. ssh客户端的设置(Windows)
由于Windows不附带ssh的客户端和服务器端,我们这里找一个免费的客户端软件PuTTY。
PuttY主页:http://www.chiark.greenend.org.uk/~sgtatham/putty/
各种客户端的比较:http://en.wikipedia.org/wiki/Comparison_of_SSH_clients
在Putty主页,我们下载putty.zip(含除了PuTTYtel以外的所有文件),然后解压会发现一个叫plink.exe的文件,这就是我们的ssh客户端命令行软件。
我们首先要成一个共有和私有的密钥对,使用putty.zip中附带的PUTTYGEN.exe生成。
启动PUTTYGEN.exe后可以见到下图界面,点击[Generate]即可生成所需密钥对。
注意:由于是采用随机算法生成,需要不停地在对话框上移动鼠标进度条才会增加,否则将保持不变。
鼠标在这里不停移动
密钥生成完毕后,可以把私有密钥进行保存,为了登录简单起见不对私钥进行加密,提示没有passphrase选择忽略即可。假设我们这里把私钥保存为pri_key.ppk。
我们把公钥放在freeSSHd端(ssh服务器端)进行保存,具体保存方法参见【ssh客户端的设置(Linux)】。
在Windows客户端,执行如下命令进行ssh连接,并不需要输入密码即可通过密钥进行自动认证。
plink -i pri_key.ppk xut@172.28.xx.xxx c:\test.bat
(此时将执行服务器端的c:\test.bat脚本。)
注:第一次连接时将出现“The server's host key is not cached in the registry… 参考技术B 启动linux并登入到系统:
下面来检查一下默认安装的系统是否安装了ssh服务:
从上图看到ssh服务已经安装并正常运行,首先要备份配置文件,任何时候我们需要修改配置文件的时候都建议先把原始文件备份:
下面我们就来修改sshd_config配置文件,需要修改两个地方,首先们需要开放ssh用到的22端口,把下图中前面的#号去掉即可:
第二个需要修改的地方是permitrootlogin
yes这个是否允许超级管理员远程登录,(另外还有passwordauthentication
yes暂时不知道是否有依赖)
同样的我们把前面的#号去掉即可:
保存退出,并且重启ssh服务:
service
ssh
restart
现在我们使用ssh工具来连接一下刚才我们配置好的linux服务器,ssh连接工具有很多,这里使用putty来测试连接,运行软件,并输入服务器的ip地址,点击下方向的“open”连接到服务器:
跳出一个警告窗口,大致是说服务器没有注册密钥之类的,是否信任服务器,我们点击“是”就可以成功的连接到刚配置好的linux服务器了:
Linux中如何设置SSH密钥提升登陆安全性
作者:幻好
概述
随着云技术的成熟,越来越多的人开始使用云服务器搭建自己的应用,但是很多人并不在意网络安全的问题,导致服务器被黑客攻击,最后追悔莫及。本文将对安全登陆协议SSH的创建及使用进行介绍,帮助大家提高安全防范。
SSH(安全外壳协议)是一种加密网络协议,它允许用户通过不安全的网络安全地访问远程计算机。
SSH 密钥是一种更安全的登录 SSH 服务器的方法,因为它们不易受到常见的暴力密码黑客攻击。尽管 SSH 支持基于密码的身份验证,但通常建议使用SSH 密钥。生成 SSH 密钥对会创建两个长字符串:公钥 和 私钥。可以将公钥放在任何服务器上,然后使用可以访问私钥的 SSH 客户端连接到服务器。当公钥和私钥匹配时,SSH 服务器无需密码即可授予访问权限。也可以通过使用可选(但强烈推荐)的密码保护私钥来进一步提高密钥对的安全性。
具体操作
创建密钥对
首先是在客户端机器上创建一个密钥。这可能是本地计算机。在本地命令行中键入命令:ssh-keygen -t ed25519
[root@localhost ~]# ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519):
输入命令后,会看到输出的命令确认信息,需要输入密钥保存地址。
如果使用的系统是不支持创建
ed25519
密钥的旧系统,或者连接的服务器不支持它们,则需要创建一个强 rsa
密钥对:ssh-keygen -t rsa -b 4096
复制这会将 -t
“类型”标志更改为 rsa
,并添加 -b 4096
“位”标志以创建 4096 位密钥。
指定保存密钥的位置
ssh-keygen
命令的第一个提示是询问保存密钥的位置:
Enter file in which to save the key (/root/.ssh/id_ed25519):
可以直接按 ENTER
此处将文件保存到 .ssh
您的主目录中的默认位置,或者指定系统中某一地址目录。
这里我们直接回车,保存默认地址。
创建密码
确认保存地址后,会提示需要设置一个密码:
Enter passphrase (empty for no passphrase):
密码也可以直接默认不设置,但强烈建议还是设置密码,因为密钥的安全性,还是基于设置的复杂程度。如果没有密码的私钥落入未经授权的其他人手上,他们将能够登录到你使用相关公钥配置的任何服务器。
回顾一下,整个密钥生成过程如下所示:
[root@localhost ~]# ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519):
Created directory /root/.ssh.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_ed25519.
Your public key has been saved in /root/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:hRTOxc4IFviuv0vr4q61fGTee2Xo5Ol/gmUtZh/Y55s root@localhost.localdomain
The keys randomart image is:
+--[ED25519 256]--+
| ...oo. |
| . o+ o. |
| o .++. |
| . ..o |
| . S . + |
| + o X + .|
| .=.. + X o + |
| oooo.. * . o o|
| .+==*o.+...o E.|
+----[SHA256]-----+
公钥现在位于 /root/.ssh/id_ed25519.pub.
私钥现在位于 /root/.ssh/id_ed25519.
将公钥复制到远程服务器
生成密钥对后,就可以将公钥放在要连接的服务器上。
可以 authorized_keys
使用该 ssh-copy-id
命令将公钥复制到服务器的文件中。确保替换示例用户名和地址:
ssh-id user@server_address
命令完成后,将能够通过 SSH 登录服务器,而不会被提示输入密码。但是,如果在创建 SSH 密钥时设置了密码,则需要输入密码。主要是因为本地的ssh客户端需要进行解密,而不是远程服务器需要解密。
禁用基于密码的 SSH 身份验证
将 SSH 密钥复制到服务器后,可以通过将 SSH 服务器配置为禁用基于密码的身份验证来完全禁止密码登录。
在禁用基于密码的身份验证之前,要确保可以使用 SSH 密钥成功登录服务器,并且服务器上没有其他用户使用密码登录。
要禁用基于密码的 SSH 身份验证,请打开 SSH 配置文件。它通常位于以下位置:
sudo nano /etc/ssh/sshd_config
此命令将在 nano
文本编辑器中打开文件。在文件中找到包含 PasswordAuthentication
的行(如果不存在则创建该行),确保没有 #
在该行的开头用 a 注释掉,并将其更改为 no
:/etc/ssh/sshd_config
PasswordAuthentication no
完成后保存并关闭文件。在 中 nano
,使用 CTRL+O
保存,点击 ENTER
确认文件名,然后 CTRL+X
退出。
重新加载 sshd
服务以使这些更改生效:
sudo systemctl reload sshd
在退出当前的 SSH 会话之前,可在另一个终端中进行测试连接以验证其仍然可以连接。
结论
在本文中,我们创建了一个 SSH 密钥对,将公钥复制到了服务器,并且(可选)完全禁用了基于密码的身份验证,通过这些操作能够帮助我们提升服务器的安全性。
想向技术大佬们多多取经?开发中遇到的问题何处探讨?如何获取金融科技海量资源?
恒生LIGHT云社区,由恒生电子搭建的金融科技专业社区平台,分享实用技术干货、资源数据、金融科技行业趋势,拥抱所有金融开发者。
扫描下方小程序二维码,加入我们!
以上是关于如何使用ssh登陆windows服务器的主要内容,如果未能解决你的问题,请参考以下文章