ssh远程连接服务器执行命令
首先说一下使用ssh远程连接服务器执行命令的方法:
为了方便描述,这里把测试服务器称之为A1,目标服务器称之为A2
如果可以直接登录到A2,则配置成功!
下面来说问题:
ssh在远程连接服务器执行命令的时候,经常会遇到环境变量的问题,如下:
如果出现上面的提示,则说明环境变量配置有问题。
先来说解决办法
问题解决!
这里就要说明bash有两种方式interactive + login shell模式和non-interactive + non-login shell模式
在服务器上执行命令,走的是interactive + login shell模式,而通过远程登录执行命令,走的是non-interactive + non-login shell模式。
这两种模式对于环境变量的读取是有区别的。
Shell首先会加载/etc/profile文件,然后再尝试依次去加载下列三个配置文件之一,一旦找到其中一个便不再接着寻找:
~/bash_profile
~/bash_login
~/profile
所以当远程执行命令时,我们只需要让~/bashrc文件中的环境变量与/etc/profile中的环境变量一致即可!
参考:
如何解决SSH远程执行命令找不到环境变量的问题
iSH Shell 这个 App 可以让我们在 iPhone 手机上启动一个 Alpine Linux 来模拟终端操作。
只要启动了 iSH Shell ,并且通过 apk 安装了 openssh ,就可以在 iPhone 上通过 ssh 操作远程 Linux 服务器了。
iSH Shell 官网: https://ishapp/
iSH Shell 帮助文档: https://githubcom/ish-app/ish/wiki
使用方式:
完成这些步骤后,就可以使用 ssh 操作远程 Linux 服务器了。
使用体验
一个使用expect免输入密码自动登录ssh的shell脚本,方便好用,适用Mac、Linux
来自:https://githubcom/jiangxianli/SSHAutoLogin
1、ssh_loginsh
2、给ssh_loginsh文件执行的权限
3、配置服务器脚本文件 软连接
4、命令使用
服务器登录
选择序列号:1、2、3
5、删除服务器脚本文件 软连接
ln参数释义
1.命令格式:
ln [参数][源文件或目录][目标文件或目录]
2.命令参数:
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”
--help 显示帮助信息
--version 显示版本信息
我们在使用shell时,经常会碰到shell变量这个名词,那么,什么是shell变量呢?shell变量就是在shell程序中保存系统和用户所需要的各种各样的值。这个值就是变量,这个值可以由我们自己来定义。shell变量可以分为以下几种类型:
1 环境变量
2 预定义变量
3 位置变量
4 用户自定义变量(也叫本地变量)
1 首先讲一下什么是环境变量,环境变量是linux系统为用户提前设定好的一类shell变量,它的功能是设置当前shell中的工作环境,包括用户的宿主目录,命令查找的路径等。
我们如何查看我们的环境变量呢?我推荐大家使用#set | more命令,set命令用于查看系统的环境变量,由于环境变量可能会比较长,这是我们可以加上一个| more用于分页查看。屏幕上输出了很多信息,我们该怎么看这些信息呢?举个简单的例子,“BASH=/bin/bash”等号左边的代表变量名称,右边代表变量值。还有没有别的方法查看环境变量呢?答案是有,我们可以使用#echo $BASH命令,请注意,echo语句的作用是显示字符串或shell变量的值,当使用“$变量名”作为echo的输出命令参数的时候,就显示的是指定的变量值。如果不加“$”,则表示输出echo后面的字符串。
下面讲一下常见的环境变量:
USER表示当前登入用户的名称
UID表示当前登入用户的UID号
SHELL表示当前登入用户使用的shell
HOME表示当前用户登入的宿主目录
PWD表示当前登入用户所在的位置
PATH表示用户敲入命令的搜索路径,我们在linux执行的命令一般都位于/XX/bin下面,我们每次敲命令都不需要将路径输入完整这就是PATH变量的功劳,shll程序根据PATH变量中设定的路径会自动搜索命令。
PS1和PS2分别代表主提示符和辅提示符。主提示符是用户在命令行状态下看到的提示符字符串,如[root@localhost ~]#之类的。辅提示符是用于我们如果输入一个比较长的命令的时候需要换行的时后,在命令的第二行出现的提示符,默认为“>”。如何换行呢?只需要在命令的行尾输入“\”回车即可。
说完常见的环境变量,再说说环境变量配置文件。环境变量配置文件可以分为全局配置文件和用户配置文件。
全局配置文件:profile和bashrc,profile负责全局环境设置,并应用于说有用户登入的shell;bashrc用于定义全局函数和别名。这两个配置文件都位于/etc目录下,修改全局配置文件需要root权限。
用户配置文件:bash_profile和bashrc。basj_profile的作用类似于全局环境变量的profile,但只对当前用户起作用;bashrc的作用类似于全局环境变量的bashrc,用于定义函数和别名。这两个文件分别位于当前登入用户的宿主目录下,由于是隐藏文件,用户可以使用ls -al命令来查看。如果对用户的配置文件做了错误的修改,可以通过复制/etc/skel/目录下模板的所有文件复制到宿主目录中,从而恢复初始配置。
2 预定义变量
预定义变量是系统中已经定义好的变量,我们只能使用预定义变量而不能创建或修改它。预定义变量的格式为“$”符号加上另外一个符号组成的。下面介绍一些常见的预定义变量。
$#表示位置参数的数量
$表示所有位置参数的内容
$表示表示命令执行后返回的状态,它用于检查上一个命令执行是否正确;当你输入#$后显示的值为0则表示之前输入到值为正确的;若为其它值都代表错误的。
$$表示当前进程的进程号
$!表示后台运行的最后一个进程的进程号
$0表示当前执行的进程名
3 位置变量
位置变量与shell脚本程序所执行时使用的命令参数行对应,命令行中的参数是按照从左到右顺序付给位置变量的。
4 用户自定义变量(本地变量)
用户自定义变量顾名思义就是用户自己定义的变量,只在自己的系统中有效。设置方法为#DAY=Sunday,使用方法为#echo $DAY命令输出的格式为Sunday。这个定义的变量只能在当前shell中使用,要是想在其他shell中使用的话,就必须将它设置为全局变量,方法为#export DAY即可在任何本地shell中生效。如果你想删除用户自定义变量,那么就要使用#unset DAY即可,unset命令无论是否输出为全局变量,都可以删除。
1PuTTY
PuTTY 是一Telnet、SSH、rlogin、纯TCP以及串行接口连接程序,全面支持ssh1和ssh2,它可以连接上支持 SSH Telnet 联机的站台,并且可自动取得对方的系统指纹码 (Fingerprint)。PuTTY为一开放源代码软件,主要由Simon Tatham维护,使用MIT licence授权。建立联机以后,所有的通讯内容都是以加密的方式传输,因此你再也不用害怕使用 Telnet 在 Internet 或公司的内部网络传输资料时被他人获知内容了!
在window下非常好的ssh连接工具,不过可惜window7不支持Telnet命令,只能用来连接Linux服务器。PuTTY提供了完善的Telnet、SSH、Rlogin等功能。但PuTTY太简陋了,简陋的让人以为是一个CMD程序。无密码管理功能,无Tab标签管理功能曾有多少人给作者写信,提出热忱的建议和期盼,都被作者牛逼无情的拒绝了。目前相信大多数人应该还是使用着它。
PUTTY开发商:Simon Tatham
软件官网:http://wwwchiarkgreenendorguk/~sgtatham/putty/
下载地址:http://wwwchiarkgreenendorguk/~sgtatham/putty/downloadhtml
脚本之家下载地址:http://www/softs/2207html
2WinSCP(SSH的开源图形化SFTP客户端)
WinSCP是一款Windows环境下使用SSH的开源图形化SFTP客户端。支持SCP协议,它的主要功能是在本地与远程计算机间安全地复制文件。WinSCP基于ssh协议,可以很方便的将文件复制进Redhat里的任意目录下。只要文件主机支持SSH协定,你就可以安心的下载、上传文件。他的操作界面是参考NC(Norton Commander)的双视窗排列方式,使用起来不会有太大的困难。在WinSCP中,一般的文件操作都没有问题,如:复制、移动、更名文件或文件夹等。(前提是需要root账号,同时确定Redhat启用了ssh服务)
开发商:Martin Prikryl
软件官网:http://winscpnet/eng/indexphp
下载地址:http://winscpnet/eng/downloadphp
脚本之家下载:http://www/softs/2205html
3SecureCRT
SecureCRT是一款支持SSH的终端仿真程序,简单的说是Windows下登录UNIX或Linux服务器主机的软件。SecureCRT,是一个让人爱不释手的工具。Tab标签管理,标签化 SSH 对话,从而可方便地管理多个 SSH 连接,支持 SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW 等多协议,以及强悍的编程脚本支持,绚烂夺目,成为了很多人的挚爱之选。注意其没有ftp工具,用了还可以,显示中文字符要设置。官方为英文版免费试用30天!
开发商:VanDyke Software, Inc
软件官网:http://wwwvandykecom/
SecureCRT 终端仿真程序 v702418 中文绿色便携版 ,使用说明:下载并解压,再直接运行 SecureCRTPortableexe 即可。
脚本之家下载:http://www/softs/45382html
4SecureCRT+SecureFX 711264 (64位整合、英文绿色便携版)
SecureCRT上面介绍过了,SecureFX是一款由VanDyke Software, Inc(中文译为:范戴克软件公司)研发生产的支持普通FTP标准和安全数据传输标准(SFTP 或者 在SSH2 上的FTP)的FTP客户端软件,有着易用的、类似于资源管理器的用户界面。SecureFX支持三种文件传输协议:FTP、SFTP 和 FTP over SSH2。它可以提供安全文件传输。无论您连接的是任何一种操作系统的服务器,它都能提供安全的传输服务。它主要用于Linux操作系统如redhat, ubuntu的客户端文件传输程序,您可以选择利用SFTP通过加密的SSH2实现安全传输,也可以利用FTP进行标准传输。该客户端具有Explorer风格的界面,易于使用,同时提供强大的自动化能力,可以实现自动化的安全文件传输。SecureFX其官方为英文版免费试用30天。
SecureCRT+SecureFX 711264 (32位整合版/英文版) 绿色便携版脚本之家下载
http://www/softs/143441html
SecureCRT+SecureFX 711264 (64位整合、英文绿色便携版)脚本之家下载
http://www/softs/143446html
SecureCRT+SecureFX_700326中文版(包括:x86和x64)脚本之家下载
http://www/softs/143461html
5Xshell
Xshell 是一个windows下SSH远程登录Linux强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。Xshell适合于初级用户和高级用户。它的界面友好,为高级用户提供了更强大的功能。其分为免费和商业版,安装可选择,附商业版Xshell 4注册码 690313-111999-999313
开发商:NetSarang Computer Inc
软件官网:http://wwwnetsarangcom/
官方下载:http://wwwnetsarangcom/download/down_xmehtml
脚本之家下载:http://www/softs/56322html
打开终端使用ssh命令链接远程服务器。 命令格式 : ssh root@19216811(root对应你使用的用户名,192……对应的服务器ip地址,一般服务器端口22,命令默认22如果需要更改端口在ssh后面 -p 端口)详细了解linux,请关注《linux就该这么学》官网。
用户要开通Linux系统服务器的时候,建议运行Xshell来远程连接服务器,如果连接不上,可以检查网络环境是否健康。
除此之外,也一定要填写正确的写Linux服务器登录信息,包括服务器用户名、密码等。如果是Linux服务器登录信息错误,可以在应用主机商客中心或者邮箱进行查看。与此同时,如果你没有安装SSH服务或者版本过低,那么也会出现连接不上的情况,这个时候你可以采用如下方式进行处理:
1、输入#ps -e | grep ssh ,如果出现“sshd”的字样,那么表示已经启动了,没有则说明没有成功。
2、安装SSH,并输入#sudo apt-get install openssh-server
3、启动#/etc/initd/ssh start
最后的最后,如果SSH端口号(22)已经呈现开放状态,IP也已经加入了白名单,但是就是连接不上,这个时候可以重新安装下MySQL,修改sshd的群组和root就行了。
0条评论