首页 > 其他分享 >一次scp连接服务器无响应但ssh正常的问题

一次scp连接服务器无响应但ssh正常的问题

时间:2024-05-01 17:33:16浏览次数:38  
标签:shell bashrc ssh 服务器 login zsh scp

背景

这个问题在Linux上出现了很久,具体表现是用work账户进行scp时,输入密码后就一直不动;用ssh登录没任何问题;用root账户进行scp能成功。

网上找了很多资料,这篇文章使用exec zsh导致该问题的出现。我在.bashrc最后加上了exec $HOME/zsh-5.9/bin/zsh使得work账户能用zsh。最根本的原因就是使用了zsh导致scp出现了问题,解决方案是让scp使用的shell为bash即可。

知识点

1、scp,客户端使用ssh命令连接到远程服务器,并指定要复制的文件或目录,然后客户端和服务器之间建立了一个加密的连接,用于传输文件数据。在传输过程中,数据被加密以确保其安全性。

2、如果ssh只是在远程主机上执行交互命令并接收结果,那么是一个non-loginnon-interactive的shell。

3、login-shell会按如下顺序执行脚本:1)执行/etc/profile;2)执行/etc/profile.d/目录下所有脚本;3)执行用户所属的~/.bash_profile(这里它是优先级最高的,如果不存在则会按照优先级顺序读取~/.bash_login~/.profile);4)执行~/.bashrc;5)~/.bashrc执行/etc/bashrc(这是因为在rc文件里定义了读取/etc/bashrc

4、non-login shell会按如下顺序执行脚本:1)执行~/.bashrc;2)~/.bashrc执行/etc/bashrc

5、如何区分login-shellnon-login shell?参考文章。非登录交互式shell:ssh example.com <my-script-which-is-stored-locally;非登录非交互式shell:ssh example.com my-script-which-is-on-the-remote-machine

6、通常我们定制一些配置时,将配置写在~/.bashrc中,然后在~/.bash_profile中读取~/.bashrc,保证login-shell交互式non-login shell得到相同的配置。

问题解决

~/.bashrc中的exec zsh移动到~/.bash_profile中即可解决问题,并且可以反推出scp使用的是非登录交互式shell。

1、vim ~/.bash_profile

# 最后添加
exec $HOME/zsh-5.9/bin/zsh

2、vim ~/.bashrc

# 删除下面行
# exec $HOME/zsh-5.9/bin/zsh

标签:shell,bashrc,ssh,服务器,login,zsh,scp
From: https://www.cnblogs.com/sjmuvx/p/18169488

相关文章

  • 在Linux中,什么是SSH,并且如何使用它?
    SSH,全称为SecureShell,是一种安全的网络协议,旨在为网络服务提供安全的远程登录、文件传输以及其他网络服务。它通过加密数据传输,提供认证机制,保证了在网络中传输的数据不被窃听或篡改,从而在不安全的网络环境中实现了安全的连接。SSH协议主要有两个版本,SSH-1和SSH-2,其中SSH-2由于其......
  • 原样压缩conda环境,并迁移环境至另一服务器
    原样压缩conda环境,并迁移环境至另一服务器压缩原环境pipinstallconda-packorcondainstallconda-pack安装好conda-pack后,使用下列命令压缩环境为tar.gz压缩包condapack-nmy_envcondapack-nmy_env-oout_name.tar.gzcondapack-p/explicit/path/to/my_env......
  • 嵌入式Linux,openssh连接报错:ssh_sandbox_violation: unexpected system call
     背景:使用buildroot编译完镜像,烧录到开发板,板子上电启动后,网络正常,ssh不能连接,sshd相同配置在其他机器上可以正常使用;查看内核日志,看到连接时上报异常系统调用的错误:Jan100:01:18NanoPC-T2auth.critsshd[278]:fatal:ssh_sandbox_violation:unexpectedsystemcall......
  • 在 Windows 使用 PuTTYgen 上生成 SSH 密钥
    在Windows使用PuTTYgen上生成SSH密钥转自: https://www.linuxidc.com/Linux/2019-08/159955.htmSecureShell(SSH)是一种加密网络协议,用于客户端和服务器之间的安全连接,并支持各种身份验证机制。两种最流行的机制是基于密码的身份验证和基于公钥的身份验证。使用SSH......
  • 自动批量实现linux机器ssh免密shell脚本
    要同时指定SSH端口和密码来实现非交互式地使用ssh-copy-id,可以使用sshpass来实现。sshpass是一个用于通过非交互方式输入密码的工具。下面是一个示例脚本,它使用sshpass、ssh-copy-id以及指定的端口号来实现这一目标:1#!/bin/bash23#检查是否提供了目标主机列表文件4i......
  • 多人同时导出 Excel 干崩服务器!新来的阿里大佬给出的解决方案太优雅了!
    来源:juejin.cn/post/7259249904777838629前言业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,还涉及文件输入、输出流的io操作,所以对服务器的性能会影响的比较大;结合以上原因,对导出操作进行排队;刚开......
  • 给Qt搭建一个简单的Json服务器用于软件调试
    一.vscode+nodejs+npm安装二.nodejs服务器开启打开vscode-终端-新建终端进入json_server目录cdD:\json_server运行启动命令,启动json-server服务器npmrunjson:server效果如下:PSD:\json_server>npmrunjson:server>[email protected]:se......
  • Linux中ssh
    ssh原理SSH(SecureShell)是一种用于安全访问远程计算机的网络协议。SSH使用加密技术来确保通信的安全性,其中包括使用公钥加密和私钥解密的方法。下面是SSH公钥传输的基本原理:生成密钥对:在使用SSH进行通信之前,首先需要在客户端生成一对密钥,包括公钥和私钥。通常使用RSA或DSA算法......
  • 服务器部署在国外,测试过程中要注意哪些方面?
    当服务器部署在国外时,在测试过程中需要特别注意以下方面:网络延迟和稳定性:由于服务器在国外,网络延迟可能较高,测试过程中需要考虑网络延迟对测试结果的影响,并确保网络连接稳定。可以使用网络监控工具来实时监测网络延迟和丢包率,以评估网络的稳定性。时区和时间差异:国外服务器......
  • 测试环境服务器比生产环境服务器差怎么等比换算?
    将测试环境服务器的性能转换为相当于生产环境服务器的性能需要一些考虑和估算,因为测试环境和生产环境可能有不同的配置、负载和性能要求。但是,以下是一种常见的方法:确定关键指标:首先,确定用于评估服务器性能的关键指标,例如CPU性能、内存容量、磁盘I/O速度等。性能评估:对测试......