专栏首页linux百科小宇宙技术|通过 ssh 会话执行 bash 别名
原创

技术|通过 ssh 会话执行 bash 别名

我在远程主机上上设置过一个叫做file_repl的bash别名。当我使用ssh命令登录远程主机后,可以很正常的使用这个别名。然而这个bash别名却无法通过ssh来运行,像这样:

$sshvivek@server1.cyberciti.bizfile_replbash:file_repl:commandnotfound我要怎样做才能通过ssh命令运行bash别名呢?

SSH客户端(ssh)是一个登录远程服务器并在远程系统上执行shell命令的Linux/Unix命令。它被设计用来在两个非信任的机器上通过不安全的网络(比如互联网)提供安全的加密通讯。

如何用ssh客户端执行命令通过ssh运行free命令或date命令可以这样做:

$sshvivek@server1.cyberciti.bizdate结果为:

TueDec2609:02:50UTC2017或者:

$sshvivek@server1.cyberciti.bizfree-h结果为:

totalusedfreesharedbuff/cacheavailableMem:2.0G428M138M145M1.4G1.1GSwap:0B0B0B理解bashshell以及命令的类型bashshell共有下面几类命令:

别名,比如ll关键字,比如if函数(用户自定义函数,比如genpasswd)内置命令,比如pwd外部文件,比如/bin/datetype命令和command命令可以用来查看命令类型:

$type-adatedateis/bin/date$type-afreefreeis/usr/bin/free$command-Vpwdpwdisashellbuiltin$type-afile_replisaliasedto`sudo-i/shared/takes/master.replication'date和free都是外部命令,而file_repl是sudo-i/shared/takes/master.replication的别名。你不能直接执行像file_repl这样的别名:

$sshuser@remotefile_repl在Unix系统上无法直接通过ssh客户端执行bash别名要解决这个问题可以用下面方法运行ssh命令:

$ssh-tuser@remote/bin/bash-ic'your-alias-here'$ssh-tuser@remote/bin/bash-ic'file_repl'ssh命令选项:

-t:强制分配伪终端。可以用来在远程机器上执行任意的基于屏幕的程序,有时这非常有用。当使用-t时你可能会收到一个类似“bash:cannotsetterminalprocessgroup(-1):Inappropriateioctlfordevice.bash:nojobcontrolinthisshell.”的错误。bashshell的选项:

-i:运行交互shell,这样shell才能运行bash别名。-c:要执行的命令取之于第一个非选项参数的命令字符串。若在命令字符串后面还有其他参数,这些参数会作为位置参数传递给命令,参数从$0开始。总之,要运行一个名叫ll的bash别名,可以运行下面命令:

$ssh-tvivek@server1.cyberciti.biz-ic'll'结果为:

下面是我的一个shell脚本的例子:

#!/bin/bashI"tags.deleted.410"O"/tmp/https.www.cyberciti.biz.410.url.conf"box"vivek@server1.cyberciti.biz"[!-f"$I"]&&{echo"$Ifilenotfound。";exit10;}>$Ocat"$I"|sort|uniq|whileread-rudouu"${u##https://www.cyberciti.biz}"echo"~^$uu1;">>"${O}"doneecho"Configfilecreatedat${O}andnowupdatingremotenginxconfigfile"scp"${O}"${box}:/tmp/ssh${box}/usr/bin/lxcfilepush/tmp/https.www.cyberciti.biz.410.url.confnginx-container/etc/nginx/ssh-t${box}/bin/bash-ic'push_config_job'相关资料更多信息请输入下面命令查看OpenSSH客户端和bash的man帮助:

$manssh$manbash$helptype$helpcommand

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git安装及密钥的生成并上传本地文件到GitHub上

    王小婷
  • 全勤矿工systemdMiner最新变种利用暗网代理下载恶意模块

    近日,深信服安全团队捕获到一款新型的Linux挖矿木马,该木马通过bash命令下载执行多个功能模块,通过SSH暴力破解、SSH免密登录利用、Hadoop Yar...

    FB客服
  • ssh&git如何穿越代理

    OpenSSH 的客户端有一个 ProxyCommand 的选项, 用于 SSH 客户端与服务器之间的隧道通信(tunneling)。所谓的隧道技术,也称代理技...

    十毛
  • Hexo

    动因 新学期开始了,这个学期准备养成开始写博客的好习惯。以前什么东西都是在QQ空间里, 后来觉得技术性稍微强一点的就是CSDN和博客园。但是啊我觉得他们的广告和...

    lwen
  • ​hacker必会技能!

    网络安全公司CrowdStrike发布了《2020全球威胁态势报告》,其研究结果显示“无文件恶意软件”攻击的趋势增加,无文件恶意软件的攻击数量超过了恶意软件的攻...

    Gamma实验室
  • Windows下Git多账号配置,同一电脑多个ssh-key的管理

      这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有一些提到一些基础的...

    用户1155943
  • 【技术创作101训练营】Git 如何成功配置SSH key连接多个代码平台?

    很多开发者才刚接触 Git 的时候,看到各种命令和报错信息,经常一头雾水。即便是反复搜索和看文档,也很难快速定位分析问题并解决。

    喵喵侠
  • 记一次 Samba 服务器渗透

    本次渗透皆为靶机环境,实则为上一篇靶机 Prime level 1 的后续。文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用...

    HACK学习
  • 基于Docker的持续集成方案(安装和配置Gogs源码仓库) - Part.4

    不管技术还是生活,我现在都越来越喜欢简单、轻巧、专一、高效。因此我放弃了使用笨重、复杂的GitLab,而选择了这个轻量的源码管理工具。它的github地址是:g...

    张子阳
  • alias后门 | Linux 后门系列

    alias 命令的功能是为命令设置别名,比如我想让我每次输入 ls 的时候都实现 ls -al 那怎么实现呢?

    意大利的猫
  • SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    本文章主要讲述Docker、Jenkins、GitLab、Git、JDK、SpringBoot、Maven等技术结合实现自动化运维部署(DevOps)应用工程,...

    JAVA葵花宝典
  • 终端复用工具tmux的使用

    2. 通过ssh远程登录server,运行tmux attach,就会切换到server上的那个bash中,接下来的操作都是在bash中了

    用户8705057
  • [喵咪Linux(2)]环境变量的坑

    #[喵咪Linux(2)]环境变量的坑# ? ##前言## 玩过linux的童鞋对环境变量都不陌生,我们在安装好一些软件,组件之后想要直接使用它都需要加入环境变...

    喵了个咪233
  • 10.11 如何使用git?

    域名中有连字符也是可以的,git-scm中就有一个连字符,不影响它的专业性和受欢迎程度。

    程序员LIYI
  • Ansible安装使用

    Ansible 简单的说是一个配置管理系统(configuration management system)。官方的title是“Ansible is Simp...

    kevinfaith
  • Linux 启动流程分析

    这个部分比较有意思。因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分...

    良月柒
  • Windows 的开发好痛苦

    本文表达的观点可能与你的看法有所不同。本文没有针对任何个人或组织,只是我个人在 Windows 上开发时屡屡受挫有感而发。文中的观点只代表个人。

    CSDN技术头条
  • Git与Gitee的远程仓库建立

    在windows下我们可以使用 Git Bash.exe来生成密钥,可以通过开始菜 单或者右键菜单打开Git Bash

    ChinaManor
  • 安全运维之如何找到隐匿于last和w命令中的ssh登录痕迹

    *本文原创作者:ForrestX386,本文属FreeBuf原创奖励计划,未经许可禁止转载

    FB客服

扫码关注云+社区

领取腾讯云代金券