Linux服务器之间拷贝文件(提示connect to host localhost port 22: Connection refused lost )

本文详细介绍了如何使用SCP命令在两台Linux服务器之间传输文件,并特别关注了SSH端口被修改后的情况。通过实际案例演示了两种传输方向的具体操作步骤,并解决了因端口更改导致的连接失败问题。

Li

 

因服务器割接,所以我要将一台服务上的文件拷贝到另一台服务器上。我是Linux菜鸟就会一些简单命令。因两台服务器都在内网,所以我想使用scp命令,这里我前把命令贴出,下面在补上我遇到的问题。

 

Java代码   收藏代码
  1. #第一种方式从本地拷贝到另一台服务器(A--->B)  
  2. scp -P 13022 -r /home/cstdev/wom_20140609.sql cstdev@192.168.1.11:/home/cstdev/wom/  
  3.   
  4. #----------------------------------------参数说-----------------------------------#  
  5. #参数-P:指的ssh端口被我们修改后要加上的参数,13022就是我修改ssh的端口(注意这里P是大写的,因为-p 已经被rcp 使用)  
  6. #参数-r:指递归方式拷贝(为什么用递归你们可以想一下)  
  7. #参数/home/cstdev/wom_20140609.sql:这就是我要拷贝的文件(全路径)  
  8. #参数cstdev:另一台服务器的用户名  
  9. #参数@:固定格式没有什么好说的照写  
  10. #参数(192.168.1.11:):另一台服务的IP地址,注意IP地址后面有英文状态下的":"(冒号)  
  11. #参数/home/cstdev/wom/:文件拷贝到哪里的路径  
  12.   
  13. Ps:如果ssh端口未被修改那就把参数-P去掉就好  
  14.   
  15.   
  16. #第二种方式返过来从另一台服务器拷贝本地(B--->A)  
  17.   
  18. scp -P 10022 -r cstdev@192.168.1.2:/home/cstdev/bss_ys/ /home/cstdev/wom/  
  19.   
  20. #命令格式都差不多,没有什么好讲滴。本址与远程不明白那换一种说法,如果我给你东西那我就用第  
  21. #一种方式;如果我要拿你的东西那就是第二种方式。  
 

 

现在说一下遇到的问题:

1.之前只知道有scp命令,但是不知道怎么使用,度娘一下后看到如下博主文章:

http://blog.youkuaiyun.com/java_min/article/details/8591516

但是我们端口被修改过所以使用上面博主的方式就会提示:

 

Java代码   收藏代码
  1. ssh: connect to host 192.168.1.11 port 22: Connection refused  
  2. lost connection  

 在网上查询后看到如下博主文章:

 

http://blog.youkuaiyun.com/gongli109/article/details/8237501

http://www.xuebuyuan.com/733655.html

http://asyty.iteye.com/blog/1440141

上面几位博主给出的我不知道是否正确,但是我敢肯定的说他们都没有说是端口是否被修改的问题。好吧中午去吃了饭回来,在谷哥上再找一下问题试试,看到如下博主文章:

http://www.anjing.me/542.html

好吧,我马上问一下运维兄弟,果然端口被改了。

接下来遇到的问题与“三中草”遇到的问题一样。照做解决。

<think> 我们正在解决Windows环境下出现`ssh: connect to host localhost port 22: Connection refused`错误的问题。 根据引用内容,该错误通常表示SSH服务未运行或未正确配置。在Windows系统中,我们需要确保OpenSSH服务已安装并运行。 以下是详细的解决步骤: 步骤1:检查OpenSSH服务状态 - 打开Windows PowerShell (管理员) - 运行命令: Get-Service -Name *ssh* - 观察输出中是否有名为`sshd`(OpenSSH SSH Server)的服务,以及其状态是否为`Running` 步骤2:安装OpenSSH服务器(如果未安装) - 如果步骤1中未找到`sshd`服务,则需要安装OpenSSH服务器: Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 - 安装完成后,启动服务并设置为自动启动: Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' 步骤3:检查防火墙规则 - SSH默认端口22必须允许入站连接: New-NetFirewallRule -Name 'SSH-Port' -DisplayName 'SSH (TCP/22)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 步骤4:重启SSH服务 Restart-Service sshd 步骤5:测试SSH连接 ssh localhost 如果问题仍然存在,请检查以下配置: 步骤6:检查SSH服务器配置文件 - 配置文件位于:`C:\ProgramData\ssh\sshd_config` - 确保以下设置正确(取消注释或添加): Port 22 ListenAddress 0.0.0.0 PermitRootLogin yes # 根据需要调整 PasswordAuthentication yes 注意:修改配置文件后需重启服务:`Restart-Service sshd` 步骤7:检查端口监听状态 netstat -ano | findstr :22 应该能看到类似:`TCP 0.0.0.0:22 0.0.0.0:0 LISTENING` 如果以上步骤都不能解决问题,请考虑重新安装OpenSSH: Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # 重启后重新安装 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 注意:Windows 10 1809及以上版本和Windows Server 2019及以上版本才支持通过Add-WindowsCapability安装OpenSSH服务器。 引用说明: 引用[1]提到了在安装Hadoop时遇到该问题,可能是由于SSH服务未启动。 引用[2]提到了macOS上的解决方法,虽然系统不同,但思路类似:检查服务状态和配置文件。 引用[3]提到了配置文件被修改导致的问题,所以我们也需要检查配置文件。 生成相关问题: </think> ### Windows环境下解决"ssh: connect to host localhost port 22: Connection refused"错误的完整方案 出现此错误表明SSH服务未在本地运行或端口22被阻止。以下是分步解决方案: #### 第一步:验证SSH服务状态 1. 以管理员身份打开PowerShell 2. 检查OpenSSH服务是否安装: ```powershell Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' ``` 如果未安装,显示: ```powershell State : NotPresent ``` 3. 检查服务运行状态: ```powershell Get-Service -Name *ssh* | Format-List Name, Status ``` 正常状态应为: ```powershell Name : sshd Status : Running ``` #### 第二步:安装并启动SSH服务 1. 安装OpenSSH服务器组件: ```powershell Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 ``` 2. 启动并配置服务: ```powershell Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' ``` 3. 验证服务状态: ```powershell Get-Service sshd | Select-Object Status # 正常输出:Status: Running ``` #### 第三步:配置防火墙规则 1. 允许SSH端口(22)通过防火墙: ```powershell New-NetFirewallRule -Name 'SSH-Port' -DisplayName 'SSH (TCP/22)' ` -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 ``` 2. 验证防火墙规则: ```powershell Get-NetFirewallRule -Name 'SSH-Port' | Select-Object Enabled, Profile ``` #### 第四步:测试本地连接 ```powershell ssh localhost # 首次连接会有提示,输入yes接受密钥 ``` 成功连接后会显示: ```powershell Administrator@localhost's password: # 输入密码后进入远程shell ``` #### 疑难解答补充 1. **端口冲突检查**: ```powershell netstat -ano | findstr :22 # 若无LISTENING状态,说明服务未启动 ``` 2. **配置文件检查**: - 编辑配置文件:`C:\ProgramData\ssh\sshd_config` - 确保存在:`Port 22` 和 `ListenAddress 0.0.0.0` 3. **重置SSH配置**: ```powershell Stop-Service sshd Remove-Item -Path "C:\ProgramData\ssh\*" -Exclude sshd_config -Force Start-Service sshd ``` > **注意**:Windows OpenSSH要求Windows 10 1809+或Windows Server 2019+版本支持[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值