草庐IT

使用XShell、XFTP 连接 win7 虚拟机(windows、Linux无法远程登录问题)

尘封. 2023-12-29 原文

文章目录


前言

更新:可以通过此文章解决三个问题:使用Windows/linux远程连接Linux或Windows,但无法连接,可以对Windows检查ssh,对Linux检查sshd
首先,你看到这篇文章的原因可能是如下两个(此篇我们以Windows7为例,因为win10ssh一般是开着的):

  1. 还没有尝试使用 [XShell 连接 Windows 7 系统(此篇文章针对 Windows7 虚拟机,但如果主体电脑是 Windows 7 系统作为服务器的话,原理也应该是差不多的)。
  2. 尝试使用 XShell 连接了 Windows 7 系统,但是连接失败(是的,就是我 )。

OK,下面我们就开始解决该连接失败问题!!!


出错原因

科普 tips:Linux 中查看网络状态使用命令 ifconfig(终端),Windows 中则使用 ipconfig(命令行)
使用XShell、XFTP连接虚拟机或者服务器教程


由此图可见(通过上面的命令先找出我们的IPV4的IP地址),出现问题的地方有几处:

  1. SSH 协议,因为 WIndows 7 的 SSH 、sshd默认是关闭的(也可能是没有安装)。
  2. 端口号 22:我们使用SSH(安全登录)、SCP(文件传输)、端口号重定向,默认的端口号为22,所以有可能是因为 22 端口没有打开,所以连接不到。
  3. 原因 2 的另一种理解:Windows 的防火墙会默认阻止一些网络上的数据,所以你会发现使用 Windows 主机 ping Linux 虚拟机可以顺利 Ping 通,但是反过来却会发现传送数据超时,Ping 不通。

(题外话)那么我们为什么要使用 SSH 连接

       在 windows 上使用 ssh 协议是因为该协议通过 tcp22 端口,服务器、路由器、交换机、sftp 等不安全的程序通过该端口都可以用于帮助加强连接以防止窃听。目前 ssh 协议大多用在 linux 系统中,但 SSH 协议本身实际上是在各种各样的系统上实现的,虽然在 windows 操作系统中不是默认开启的,但开启后可以和 linux 操作系统一样简单方便的使用 ssh 协议来连接服务器等。


开始操作(Windows7)


首先进行 SSH 测试

先在Windows中进行 ssh 命令测试,如果出现下面这样的结果,则继续阅读,否则可以跳过下面下载ssh 的步骤。(win+R输入cmd,回车,然后输入ssh)

出现该结果说明没有ssh,下面进行安装。click me 跳转


获取所需的openSSH文件

在Windows7的浏览器(刚安装之后默认是IE)中的地址栏搜索:https://github.com/PowerShell/Win32-OpenSSH/releases
估计加载不出来,IE,你懂得,所以最好的方式是先打开www.baidu.com,然后搜索一款可以打开下载页面的浏览器(不知道为什么下载火狐的页面打不开,估计是IE的一些访问设置,搞起来挺累,我就直接下载了猎豹安全浏览器,后面再卸载就行),看下图,进去之后点击立即下载,然后选择运行或者保存即可。

然后打开你刚下载的浏览器,输入前面的那个 GitHub网址搜索,要等待一段时间,或者时间长不出来就换个网试试。(一段时间后,没错,我又在猎豹里面下载了 Firefox(火狐),没办法,猎豹页面可以出来,但是下安装包的地方出不来) ,Firefox进入页面后,选择32 位或者 64 位均可,此处选择 64位(点击之后会弹出下载页面,要是没有弹出来可能是默认下载路径了,直接到浏览器里面的“下载”页打开查看下载进度,亲测,我无脑一直点,下载了好多个~~~):

等待时间可以下载个解压软件,推荐band.zip

更新:一个博主的方法,但是我没有进行准确度测试,稳妥就选我的方式,想玩玩儿的可以看一看试验下提升访问github.com网址的速度


安装openSSH

下载完成后进行解压,并把openSSH整个目录进行复制到 C:\Program Files (其实哪个目录都可以,不过建议安装在这里,免得出问题)


添加环境变量

单击计算机,右键——>属性——>高级系统设置——>环境变量——>系统变量,在此框里面找到 Path 进行编辑, 将路径“C:\Program Files\OpenSSH-Win64”添加进去。


如果是win10的话直接“新建”——>然后添加即可。

(没有计算机图标的可以桌面右键“个性化”——>“左上方更改桌面图标”——>选中计算机前的框——>应用,确定)


ssh测试

接着就可以进行ssh测试了(重新打开一个命令行窗口),出现下图输出证明安装成功!但是此时还是不能远程连接登录。


发布ssh服务

依次在命令行(在开始菜单下面输入cmd,然后选中右键“以管理员身份运行”)中输入以下命令(觉得麻烦可以在做该设置的虚拟机中的浏览器打开本文章直接copy):

# #的部分均为注释部分,不用理会
cd C:\Program Files\OpenSSH-Win64\OpenSSH-Win64   #必须先转到我们之前加入到环境变量中的路径下,即:ssh的文件夹内部,不然后面的步骤会报错
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1   #安装sshd服务
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22   # 开放22号端口(如果你在windows关闭了防火墙并配置了入站规则可以不执行如下命令,多执行不影响)
sc config sshd start= auto    #配置开机自启动sshd服务
net start sshd    # 开启服务

以下为每一步的截图:





OK!到这一步做完就差不多了,接着验证一下22号端口是否处于 listening 状态。
使用命令 netstat -an

成功!接着就可以顺利使用xshell进行远程连接或者使用xftp进行传文件了。

连接的时候要是重复向你弹出SSH拒绝了密码之类的话证明要么是你用户名填错了,要么是你填的用户名没有设置密码(没错是我),记得回去重设密码再登录。


开始操作(Linux,以Ubuntu为例)

其实吧,SSH可以理解为client,sshd可以理解为server,因为咱们是用Windows去远程连接Linux系统,某种程度上说,被远程连接的这个机子就是咱们的服务器,所以sshd说是要打开的(不知道理解的对不对,我是这么感觉的)

此处操作均已Ubuntu为例,其他的Linux发行版可能shell命令会有所不同,但原理是一样的(为了防止意外错误,可以先转换到root用户下再操作,Ubuntu默认无root,使用 sudo passwd 设置新密码,然后使用 su root输入并新密码进入root用户 )。

  1. 检查ssh是否打开ps -e | grep ssh(在终端(terminal)中输入)
    应该是没有ssh出现,因为出现了就证明你可以用xshell连接成功,或者问题不是这个

  2. 安装SSH(如果已存在则跳过该步骤)
    (1) apt-get 可以使用的情况下:
              使用如下命令安装:

su root   //需要先切换为root用户下才有权限,已切换则不用
// 输入密码
// 一般情况下下面这两步操作是可以不做的
apt-get update    //apt-get update是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。只是更新了apt的资源列表,没有真正的对系统执行更新
apt-get upgrade  //进行升级, 过程中需要输入一次 y

//进行安装
apt-get install ssh 

(2)如果发现在使用如apt-get install ssh 或者sudo apt-get install ssh
等一些命令时无法安装,出现 “unable to locate package xxx” 或是 “Unit sshd.service could not be found” 这样的错误,则使用下面的命令安装ssh

//找一个存放ssh文件的目录
cd /home    
mkdir myssh
cd myssh/

//安装
wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz  //下载安装包
tar xzvf openssh-5.9p1.tar.gz   //解压  此处的5.9版本无用在意,会自动在上一步的网址中下载最新版本,只需要输入open然后用tab键自动补全即可
cd openssh-5.9p1   //进入目录

//配置的过程我也是第一次尝试,不确定每一步的原理与结果,所以有的结果可能会有报错,此处只记录我的解决过程,反正结果是好的
./configure 
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib2
make
make install

//查看版本确定是否已经可用
ssh -V

//此处应该是直接进行配置文件的设定的,但是此时打开所谓的 /etc/ssh/sshd_config 文件时发现内容很少,很多的配置都是不存在的情况,此时需要再次安装
sudo apt-get install openssh-server  //安装ssh服务端
sudo apt-get install openssh-client  //安装ssh客户端
systemctl status sshd   //查看sshd的状态,在active可以看到绿色文字 running
vim /etc/ssh/sshd_config  //查看配置文件,将PermitRootLogin yes加上,查看一下就行,估计是有的,我反正没做这步操作,可跳过,如果后面的步骤不顶用,再回过头设置

//此时可以使用xshell等软件进行远程登录连接,应该是可行的

如果不行则重新启动(紫色字体部分)
systemctl start ssh //启动ssh服务 ,使用 service sshd start 也一样
systemctl restart ssh  //重启ssh服务
systemctl stop ssh   // 停止ssh服务

// 设置ssh服务开机自启动
sudo systemctl enable ssh





参考文章:

Linux中使用SSH服务远程连接Linux系统
window server如何卸载openssh
虚拟机上的各个端口号代表的意思
为什么在 Windows 上用 SSH
在Windows 10中打开远程桌面连接的5种方法
-File参数的参数’install-sshed.ps1‘不存在| powershell
Windows7之SSH,安装OpenSSH实现SSH客户端及服务
Xshell7远程连接失败(connection failed)的问题解决
Linux系统下OpenSSH的安装及基本配置文件详解
Linux安装OpenSSH与SSL
Unit sshd.service could not be found
Ubuntu 无法连接xshell的问题


写在最后:
首先,如果本篇文章有任何错误,烦请读者告知!不胜感激!
其次,本篇文章仅用于日常学习以及学业复习,如需转载等操作请告知作者(我)一声!
最后,本文会持续修改和更新,如果对本分栏的其他知识也感兴趣,可以移步目录导航专栏,查看本分栏的目录结构,也更方便对于知识的系统总结!
兄弟姐妹们,点个赞呗!
感谢!笔芯!

有关使用XShell、XFTP 连接 win7 虚拟机(windows、Linux无法远程登录问题)的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  8. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  9. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  10. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

随机推荐