SSh的相关操作
SSh的相关操作文章目录一.基于SSH实现发送命令到远程服务器二.基于SSH进⾏免密数据传输三.综合案例基于JDK的安装和操作一.台机器的jdk的安装和配置二.把这个软件和相应的配置文件通过scp发送出去四.基于Ubuntu完成SSH服务配置一.第⼀步 需要让三个服务器全部都使⽤itheima⽤⼾登录服务器二.第二步: 需要让三台服务器都要配置免密操作三.第三步依次通过 ssh 主机地址 连接各个服务器 观察是否需要输⼊密码综述一.基于SSH实现发送命令到远程服务器SSH远程执⾏命令是通过SSH协议连接到远程服务器并在远程服务器上执⾏指定的命令或脚本 ⽽⽆需直接登录到服务器的终端相关的命令是ssh[选项]usernameremote_hostcommand [] conmmad说明 username远程服务器的⽤⼾名。 remote_host远程服务器的IP地址或域名。 command要在远程服务器上执⾏的命令 异步执⾏ 在远程服务器后台运⾏ SSH不会等待命令完成会⽴即返回并关闭连接 选项-t 如果远程命令需要交互式终端例如 sudo 命令可以使⽤-t 选项-p 如果远程服务器的SSH服务运⾏在⾮默认端⼝默认是22可以使⽤-p 选项指定端⼝-o 使⽤-o 选项来指定SSH配置选项例如禁⽤主机密钥检查StrictHostKeyCheckingno-A 需要转发认证代理连接例如使⽤SSH密钥进⾏跳板机连接可以使⽤-A 选项 需求⼀ 在node1中远程查看node2的主机名 ssh root192.168.88.102hostname需求⼆ 在node1中远程执⾏进⼊root⽤⼾家⽬录并在此⽬录下创建 a.txt⽂件 说明如果是执⾏多个命令可以使⽤分号 或 来分隔命令 分号 仅分隔命令 不管前⾯得命令是否执⾏成功 后⾯的命令依然会执⾏ 将多个命令合并为⼀个命令 前⾯得命令如果执⾏失败 后⾯的命令就⽆法执⾏ ssh root192.168.88.102cd ~ touch a.txt这里面我为大家看一下我所在操作过程之中遇到的问题首先呢就是要注意的是目标主机的IP地址之后是务必要要加上引号的我当时就没有加上的然后命令没有跑通我查了一些资料之后明白了其实就是没有加上引号意思就是连接到目标主机之后然后执行前面的命令然后断开了在本地的主机执行之后的指令在这里其实目标主机并没有执行这个所带来的效果其实是连接远程主机然后在远程主机里面执行cd /home 命令之后就断开了在本地主机执行touch test.txt这个是第一句的指令然后呢我在本地主机执行了第二句指令其实是前面的意思与第一句带来的效果一样但是呢后面的是在本地主机创建了一个test1.txt然后呢我在ubuntu查看是俩个都没有的其实就是因为我没有加上引号导致的之后之后我加上了引号就发现了是可以进行操作的。之后呢我就没有遇到了什么问题了这个方面就解决了然后就开始了下一个进展了。二.基于SSH进⾏免密数据传输SCPSecure Copy Protocol是基于 SSH 协议的安全⽂件传输⼯具可⽤于在本地和远程服务 器之间传输⽂件或⽬录。通过 SCP数据在传输过程中会被加密确保安全性其基本的语法结构是:源⽂件路径本地⽂件或远程服务器上的⽂件。 ⽬标路径本地路径或远程服务器上的路径。 常⽤选项-r 递归复制整个⽬录传输⽬录时必⽤-P 指定 SSH 连接的端⼝号默认是 22-i 指定 SSH 使⽤的私钥⽂件⽤于免密登录-q 静默模式不显⽰进度条和调试信息-C 开启压缩传输提⾼传输速度适合⼤⽂件或低速⽹络-l 限制传输速度单位为 Kbit/s例如-l 1000 表⽰限制为 1MbpsSCP的基本语法是1.从本地传输到远程 scp/local/path/file.txt userremote:/remote/path/ 2.从远程传输到本地 scp userremote:/remote/path/file.txt/local/path/ 3.递归传输整个⽬录 scp-r/local/path/diruserremote:/remote/path/下面是我操作出来的大家可以看一下在这里面呢其实还有一个问题:这个是远程给ubuntu发送消息的时候是不能发送到根目录下的由于ubuntu的权限就是远程登录只可以由普通用户的也就是说普通用户只可以访问~对于根目录是没有访问权限的所以我只能用scp信息给家目录传递三.综合案例基于JDK的安装和操作一.台机器的jdk的安装和配置在这里面呢首先呢我们应当先从网上下载jdk的rpm包然后再把其传输到本主机就可以了当然了在这里我遇到一些问题我其实在把这个rpm上传到linux的时候发现了一个问题就是无论如何上传其实都是会报错的。然后呢我研究了一下这个问题发现了其实就是由于我当时以为我当时Linux所在的系统权限是root所以在上传文件时也是root这个权限可以对于文件夹拥有读写权限但是呢其实就是在上传的时候是默认了普通用户的权限所以我们要做的其实就是赋权,用命令chmod 777 software就可以了真正原因MobaXterm 不是用 root 身份传文件的你 SSH 终端里确实是 root#提示符但 MobaXterm 左侧那个 SFTP 文件浏览器走的是另一个会话它不一定继承你终端的 root 身份MobaXterm 建立 SFTP 连接时可能用的是你最开始填的那个普通用户比如admins而不是 root。哪怕你终端su -切到 root 了SFTP 面板那边还是原来那个连接不会自动升级。所以 SFTP 侧对software目录的身份是 “other”其他人而 other 只有 r-x没写权限 → 报Permission denied。你chmod 777后other 也拿到了 rwx所以其他人也就是 SFTP 那个连接就能写了——问题消失然后我们用rpm -ivh对于rpm进行安装操作就可以了然后还有一个注意的是我们需要修改配置文件vim /etc/profile这个是要在文末加上的。最后呢我们重载一下服务source /etc/profile然后我们在屏幕上输入java javac测试一下就可以了二.把这个软件和相应的配置文件通过scp发送出去1.我们先发送软件包cd /opt scp -r jdk1.8.0_241/ root192.168.88.102:$PWD说明 $PWD 常量值 表⽰当前所在的路径2.SCP /etc/profile root192.168.88.102:/etc/这里面其实就是opt路径下的不可以使用$PWD了3.最后我们重启一下服务就可以source /etc/profile在这里我们测试一下发现成功了。就可以下一步了四.基于Ubuntu完成SSH服务配置一.第⼀步 需要让三个服务器全部都使⽤itheima⽤⼾登录服务器首先呢我们需要都同时打开三台服务器务必要要保证要小于我们电脑的内存否则会打不开的接着我们打开了之后使用以下命令增加账户itheimauseradd itheima passwd itheima 123456然后呢三台主机都同时输入这几行命令就可以了最后呢我们使用三台主机所对应的IP地址在mx上面只要把主机名修改为itheima登录就可以了就像如此的二.第二步: 需要让三台服务器都要配置免密操作这个和我的上一个博客是一样的内容也一样的只不过操作起来比较麻烦的我们首先是在每台主机里面下载对应的公钥和私钥然后呢再以此把对应的公钥发送三分操作三次就可以了下载对应的公钥和私钥ssh-keygen-f ~/.ssh/id_rsa-P-q ll ~/.ssh二.我们开始把对应的公钥发送三分ssh 192.168.149.128 ssh 192.168.149.129 ssh 192.168.149.131三台主机其实都是如此写的只不过我们要注意的是需要一行一行操作的三.第三步依次通过 ssh 主机地址 连接各个服务器 观察是否需要输⼊密码依次通过 ssh 主机地址 连接各个服务器 观察是否需要输⼊密码 建议⽅案 ⼀个节点 ⼀个节点依次测试 确保不漏测 以node1为例 ssh 192.168.88.101 通过exit退回-- node1 ssh 192.168.88.102 通过exit退回-- node1 ssh 192.168.88.130 通过exit退回-- node1这个地方是没有上面难度的和之前的博客一样的我把我其中一台主机样图给展示出来综述今天在操作的时候其实是和之前的ssh命令一样的只不过扩充了一些其他的内容比如scpssh远程传输命令等等,最后我们在综合的案例当中发现了这个其实我在最后进行网络测试的时候是瞎弄的就比如是我们不是在测完一个ip的时候不是应该回退测试下一个ip对吧但是呢我当时没有注意就想当然的操作了这是一点,其实也挺好的这个命令这些天学习了博客其实也写了公钥私钥其实也明白了关键是这个命令对于以后的脚本操作有积极意义的。