前言

  简单的来说,SSH 是 Secure SHell protocol 的简写 (安全的壳程序协议),它可以透过数据封包加密技术,将等待传输的封包加密后再传输到网络上, 因此,数据讯息当然就比较安全啰!这个 SSH 可以用来取代较不安全的 finger, R Shell (rcp, rlogin, rsh 等), talk 及 telnet 等联机模式。

启动ssh服务器

  事实上,在我们使用的 Linux 系统当中,默认就已经含有 SSH 的所有需要的软件了!这包含了可以产生密码等协议的OpenSSL 软件与 OpenSSH 软件 (注1),所以呢,要启动 SSH 真的是太简单了!就直接给他启动就是了!此外,在目前的 Linux Distributions 当中,都是预设启动 SSH 的,所以一点都不麻烦,因为不用去设定,他就已经启动了! 哇!真是爽快~无论如何,我们还是得说一说这个启动的方式吧!直接启动就是以 SSH daemon ,简称为 sshd 来启动的,所以,手动可以这样启动:

/etc/init.d/ssh start

  需要注意的是,SSH 不但提供了 shell 给我们使用,亦即是 ssh protocol 的主要目的,同时亦提供了一个较为安全的 FTP server ,亦即是 ssh-ftp server 给我们当成是 FTP 来使用!所以,这个 sshd 可以同时提供 shell 与 ftp 喔!而且都是架构在 port 22 上面的呢!

ssh客户端

  ssh命令行格式

ssh [-f] [-o 参数项目] [-p 非正规埠口] [账号@]IP  [指令]
选项与参数:
-f :需要配合后面的 [指令] ,不登入远程主机直接发送一个指令过去而已;
-o 参数项目:主要的参数项目有:
ConnectTimeout=秒数 :联机等待的秒数,减少等待的时间
StrictHostKeyChecking=[yes|no|ask]:预设是 ask,若要让 public key
主动加入 known_hosts ,则可以设定为 no 即可。
-p :如果你的 sshd 服务启动在非正规的埠口 (),需使用此项目;
[指令] :不登入远程主机,直接发送指令过去。但与 -f 意义不太相同。

  一般使用 ssh 登入远程主机,都会填写【ssh 账号@主机IP 】的格式, 意思是说,使用该主机的某账号登入的意思。但是很多朋友都不喜欢写账号,亦即使用【ssh  主机IP 】的格式。

  直接联机登入到对方主机的方法 (以登入本机为例)

[root@www ~]# ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is eb::::b9:3b:3f:e4:ad:ba:f1:::fc::3b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
root@127.0.0.1's password: <==在这里输入 root 的密码即可!
Last login: Mon Jul :: from 192.168.1.101
[root@www ~]# exit <==离开这次的 ssh 联机
# 由于 ssh 后面没有加上账号,因此预设使用当前的账号来登入远程服务器

  如同上面的范例情况。要注意喔,如果不写账号的话,那么会以本地端计算机的账号来尝试登入远程。 也就是说,如果近端与远程具有相同的账号,那么不写账号也没有关系,如上表中的范例。但是,为了以后习惯着想, 还是一开始就使用类似 email 的方式来登入远程主机,这样的行为习惯比较好啦!

  上面出现的讯息中,开头 RSA 的那行后面接的就是远程服务器的公钥指纹码,如果确定该指纹码没有问题,那么你就得要输入 yes 来将该指纹码写入服务器公钥记录文件 (~/.ssh/known_hosts),以方便未来比对该服务器的正确性之用。 注意是要写 yes 喔,单纯输入 Y 或 y 是不会被接受的~此外, 由于该主机的公钥已经被记录,因此未来重复使用 ssh 登入此主机时,就不会出现这个指纹码提示了。

  使用 student 账号登入本机

[root@www ~]# ssh student@127.0.0.1
student@127.0.0.1's password:
[student@www ~]$ exit
# 由于加入账号,因此切换身份成为 student 了!另外,因为 127.0.0.1 曾登入过,
# 所以就不会再出现提示你要增加主机公钥的讯息啰!

  登入对方主机执行命令后退出

[root@www ~]# ssh student@127.0.0.1 find / &> ~/find1.log
student@localhost's password:
# 此时你会发现怎么画面卡住了?这是因为上头的指令会造成,你已经登入远程主机,
# 但是执行的指令尚未跑完,因此你会在等待当中。那如何指定系统自己跑? 与上题相同,但是让对方主机自己跑该指令,你立刻回到近端主机继续工作:
[root@www ~]# ssh -f student@127.0.0.1 find / &> ~/find1.log
# 此时你会立刻注销 127.0.0.1 ,但 find 指令会自己在远程服务器跑喔!

  如果你想要让远程主机进行关机的指令,如果不加上 -f 的参数, 那你会等待对方主机关机完毕再将你踢出联机,这比较不合理。因此,加上 -f 就很重要~因为你会指定远程主机自己跑关机, 而不需要在空空等待。例如:『ssh -f root@some_IP shutdown -h now 』之类的指令啰。

  删除掉 known_hosts 后,重新使用 root 联机到本机,且自动加上公钥记录

[root@www ~]# rm ~/.ssh/known_hosts
[root@www ~]# ssh -o StrictHostKeyChecking=no root@localhost
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
root@localhost's password:
# 如上所示,不会问你 yes 或 no 啦!直接会写入 ~/.ssh/known_hosts 当中!

  此时如果每台计算机都在主动加上公钥文件记录,都得要输入『 yes 』,会累死!那么加上这个 StrictHostKeyChecking=no 就很有帮助啦!他会不询问自动加入主机的公钥到档案中,对于一般使用者帮助不大,对于程序脚本来说, 这玩意儿可就很不错用了!

转自: http://vbird.dic.ksu.edu.tw/linux_server/0310telnetssh_2.php#ssh_start


END 2019-04-18 10:29:20

【转】ssh服务器启动和客户端常用操作的更多相关文章

  1. 配置监听器 服务器启动时 检索常用数据 保存在application中 减少数据的查询操作(OA项目)

    模型 大致介绍一下:左侧菜单是用户登录成功之后显示的页面  这些数据就是通过查询数据库 然后在页面中把查到的数据  循环遍历出来   构成了操作菜单 第一个解决的问题:常用数据  在服务器启动的时候 ...

  2. zookeeper的客户端常用操作

    一,查看当前zookeeper的版本: [root@localhost conf]# echo stat|nc 127.0.0.1 2181 Zookeeper version: 3.5.6-c11b ...

  3. iscsi客户端常用操作

    说明 本篇主要记录iscsi的客户端的一些常用的一些操作 iscsi服务端常用操作 删除一个lun tgtadm --lld iscsi --mode logicalunit --op delete ...

  4. SSH服务器与Android通信(1)--服务器端发送数据

    很多应用要求SSH服务器不仅和PC通信,还要和Android移动设备通信,这时就需要用到JSON了.其基本原理是服务器将数据转换成JSON格式,发送给Android客户端,客户端再将JSON格式的数据 ...

  5. linux学习(2):linux服务器常用操作和命令

    linux服务器常用操作和命令 目录 1. 什么是linux服务器load average?2. 如何查看linux服务器负载3. 服务器负载高怎么办?4. 如何查看服务器内存使用率?5. 如何查看单 ...

  6. Windows上SSH服务器的配置以及客户端的连接

    1.      ssh简介以及本例的应用场景 ①       ssh的简介 SSH是一个用来替代TELNET.FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题.为了系统安全和用户自身的权 ...

  7. SSH服务器与Android通信(3)--Android客户端发送数据

    Android客户端向SSH服务器发送数据主要有三种情况:通过客户端删除数据.添加数据和修改数据. 1.删除数据 先看看jsp文件里面是怎样删除数据的: <td align="cent ...

  8. linux svn服务器搭建、客户端操作、备份与恢复

    Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据.这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到 ...

  9. ssh下常用操作汇总(good)

    1. 安装git,从程序目录打开 "Git Bash"  2. 键入命令:ssh-keygen -t rsa -C "email@email.com"   &q ...

随机推荐

  1. C#星夜拾遗之delegate示例

    概念 delegate即委托.如果你使用过C++或者js中的回调函数,你会更容易明白一些.在异步操作中常常使用回调函数,例如在Ajax中,当HttpRequest执行异步请求时,就需要有一个状态改变时 ...

  2. android 插件合集

    1.增加编译速度:fastdex-plugin 2.gradle 版本网站http://services.gradle.org/distributions/

  3. MyBatis向数据库中批量插入数据

    Foreach标签 foreach: collection:指定要遍历的集合; 表示传入过来的参数的数据类型.该参数为必选.要做 foreach 的对象,作为入参时,List 对象默认用 list 代 ...

  4. CRLF攻击的一篇科普:新浪某站CRLF Injection导致的安全问题(转)

    转:https://www.leavesongs.com/PENETRATION/Sina-CRLF-Injection.html 新浪某站CRLF Injection导致的安全问题 PHITHON ...

  5. luogu P1437 [HNOI2004]尻♂砖块

    传送门 想明白了其实不难 强行瞎扯 这题的限制比较烦,导致了一行行转移几乎不能做(吧) 那么一列列转移呢? 设\(f_{i,j,k}\)表示前\(i\)列,取\(j\)个,其中第\(i\)列取从上往下 ...

  6. C - Musical Theme (后缀数组)

    题目链接:https://cn.vjudge.net/contest/283743#problem/C 题目大意:给你n个数组,然后问你是否有多个“相似”且不重叠的子串的长度大于等于5(两个子串相似当 ...

  7. redis实现消息队列&发布/订阅模式使用

    在项目中用到了redis作为缓存,再学习了ActiveMq之后想着用redis实现简单的消息队列,下面做记录.   Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易的实现一个高性 ...

  8. AD域相关的属性和C#操作AD域

     “常规”标签  姓 Sn 名 Givename 英文缩写 Initials 显示名称 displayName 描述 Description 办公室 physicalDeliveryOfficeNam ...

  9. 梯度优化算法总结以及solver及train.prototxt中相关参数解释

    参考链接:http://sebastianruder.com/optimizing-gradient-descent/ 如果熟悉英文的话,强烈推荐阅读原文,毕竟翻译过程中因为个人理解有限,可能会有谬误 ...

  10. /etc/fstab文件详解【转】

    ******************************************************************************* 有很多人经常修改/etc/fstab文件 ...