在linux中SSH服务对应两个配置文件:

ssh特点:在传输数据的时候,对文件加密后传输。

ssh作用:为远程登录会话和其他网络服务提供安全性协议。

ssh小结:

  1、SSH是安全的加密协议,用于远程连接服务器。

  2、SSH默认端口是22,安全协议版本有SSH2、SSH1。(SSH1有漏洞)

  3、SSH服务端主要包含两个服务功能SSH远程连接和SFTP服务。

  4、Linux SSH客户端包含ssh远程连接命令,以及远程拷贝scp命令等。

ssh服务有如下两个工具:

***服务端或客户端版本不相同是连接不上的***

客户端连接服务端基本口令(-p指定端口,不加为默认端口):

  ssh -p22 root@10.0.0.10或ssh root@10.0.0.10

linux通信验证所在地(等第一次登录时会在本地残生一个秘钥文件~/.ssh/known_hosts【多个秘钥】):

cd ~/.ssh/

SSH默认登录文件相关参数配置

相关参数说明(/etc/ssh/sshd_config):

port  :指定sshd进程监听的端口号,默认为22.可以使用多条指令多个端口。默认为22,可以使用多条指令监听多个端口。默认将在本机的所有网络接口上监听,但是可以通过ListenAddress指定只在特点的接口上监听。

PermitEmptyPasswords  :是否允许密码为空的用户远程登录。默认为“no”。

PermitRootLogin  :是否允许root登录。可用值如下:“without-password”表示使用密码认证登录。“forced-commands-only”表示只有指定了command选项的情况下允许使用公钥认证登录。同时其它认证方法全部禁止。这个值常

          用语远程备份之类的事情。(为了安全:不允许root用户登录,但可以登录普通用户使用sudo来执行相应的root命令)

UseDNS  :指定sshd是否应该对远程主机名进行方向解析,以检查此主机名是否与其IP地址真实对应。默认值为“yes”。

在SSH服务中含有有SCP远程拷贝服务:

  SCP为远程拷贝文件或目录的命令(命令介绍):

-P(大写)  :接接口号,SSH默认端口为22,如果端口为22可以省略。

-r  :递归,表示拷贝目录。

-p(小写)  :表示在拷贝前后保存文件或目录属性。

-l  :(limit)限速。

例子:

  scp -P22 -rp /etc oldboy@10.0.0.10:/tmp

也可实现rsync的推拉操作(例子):

  推:scp -P22 -rp /etc oldboy@10.0.0.10:/tmp

  拉:scp -P22 -rp oldboy@10.0.0.10:/tmp/etc /data

  限速:scp -P22 -rp -l 10 /etc oldboy@10.0.0.10:/tmp

scp小结:

  1、scp是加密的远程拷贝,而cp仅为本地拷贝。

  2、可以把数据从一台机器推到另一台机器,也可以从其它服务器吧数据拉回到本地执行命令执行命令。

  3、每次都是全量完整拷贝,因此,效率不高,适合一次性拷贝用,如果需要增量拷贝,用rsync。

SSH服务附带的sftp功能服务

winds客户端与linux服务器之间的传输数据工具:

  1、rz、sz(lrzsz)

  2、winscp WinSCP-4.0.5(基于SSH,SFTP)

  3、SFX(xshell)

  4、SFTP(基于SSH,加密传输)

  5、samba,http,ftp,nfs

    FTP工具:vsftp、proftpd、SFTP

sftp客户端连接sftp服务方法(不安全):

  1、sftp -oPort=22 oldboy@10.0.0.10  #l连接端口

  2、cd /home/oldboy  #可以切换指定的目录

  3、put /etc/hosts  #把/etc/hosts客户端本地传输到sftp服务器当前连接的目录

  4、mkdir /tmp/ett  #也可以创建目录

  5、get /etc/hosts /home  #可以下载文件(不指定位置默认下载到原登录时的目录位置)

使用密钥认证的方法步骤:

  1、生成密钥(建议在普通用户下生成为了安全):

    ssh-keygen -t rsa

  2、将公钥发送给需要配置密钥的用户(该命令只能发送“公钥=锁”“私钥=钥匙”)

    ssh-copy-id -i .ssh/id_rsa.pub "-p52113 names@172.16.1.100"

  

  3、启动公钥认证:

    修改配置文件/etc/ssh/sshd_config,将“PasswordAuthentication yes”修改为“PasswordAuthentication no”。

  4、测试(不用密码发送表示成功):

    scp -P52113 hosts names@172.16.1.100:~  #端口号我改成了52113,原先以及拷贝了hosts放在家目录中

  5、为了安全在普通用户中操作但是没有权限,所有配给该用户sudo的权限

  6、跳转到names用户,然后执行命令测试

    ssh -p52113 -t names@172.16.1.100 sudo rsync ~/hosts /etc/hosts  #执行完后,我操作的/etc/hosts,但原先已经拷贝到了家目录,所有直接传递

  -t参数是sudo命令需要tty终端;而默认ssh没有;所有ssh加 -t参数分配一个终端sudo的取消默认指向一个终端的命令,如果不想加-t参数可以直接把Defaults  requiretty参数注释掉(为了安全不建议)。路径/etc/sudoers

 非交互式传输:

第一步:安装expect、添加用户及创建密码

yum install expect
useradd oldboy2
echo "oldboy"|passwd --stdin oldboy2
id oldboy2
su - oldboy2

第二步:创建密钥
echo -e "\n"|ssh-keygen -t dsa -P ''

第三步:在管理机编辑 vim ssh_expect.exp添加如下代码
***************************************************
#!/usr/bin/expect
if { $argc != 2 } {
send_user "usage: expect ssh_expect.exp file host\n"
exit
}

#define var
set file [lindex $argv 0]
set host [lindex $argv 1]
set password "oldboy"
#spawn scp /etc/hosts root@10.0.0.142:/etc/hosts
#spawn scp -P52113 $file oldboy@$host:$dir
spawn ssh-copy-id -i $file "-p 52113 oldboy2@$host"
expect {
"yes/no" {send "yes\r";exp_continue}
"*password" {send "$password\r"}
}
expect eof

exit -onexit {
send_user "good bye"
}

***************************************************
第四步:推送公钥
expect ssh_expect.exp ~/.ssh/id_dsa.pub 172.16.1.31

以上服务小结:

  1、ssh为加密的远程连接协议。相关软件有openssh、openssl。

  2、默认端口号为22.

  3、服务端ssh远程连接服务,sftp服务,sshd后湖进程,开机要自启动。

  4、ssh客户端包含ssh、scp、sftp命令

  5、ssh安全验证方式:口令和密钥,这两种都是基于口令和ssh密钥登录的原理。

  6、ssh服务安全优化,修改默认端口22,禁止root远程连接,禁止dns,SSH只监听内网IP。

  7、ssh密钥对,公钥在服务器端,比喻就是锁头,私钥在客户端,比喻就是钥匙。

SSH(远程登录)的更多相关文章

  1. 【浅层优化实战】ssh远程登录Linux卡慢的全过程排查及解决方案

    ssh远程登录Linux卡慢的全过程排查及解决方案 前言: 在linux操作系统使用过程中偶然一次感到使用ssh远程连接软件连接操作系统需要等待许久,第一次没在意,第二次也没在意,第三次有点忍受不住了 ...

  2. Firefly安装ROS及ssh远程登录配置

    一.在Linux firefly 3.10.0 上安装ROS-indigo 快捷键 CTRL + ALT  + T 打开终端并安装ROS-indigo sudo sh -c 'echo "d ...

  3. SSH客户端(如PuTTY)ssh远程登录Linux非常慢的解决方法

    转:http://blog.useasp.net/archive/2014/05/19/solved-the-problem-of-ssh-client-such-as-putty-remote-lo ...

  4. ssh远程登录linux live系统

    要想ssh远程登录,须要准备两件事:配置同网段IP和开启SSH服务. 因为live系统没有IP,所以首先须要配置IP. 我的live系统是在虚拟机上启动的,宿主IP为192.168.230.1,liv ...

  5. ssh远程登录linux服务器

    ssh远程登录linux服务器 用法: ssh -l user -p port server_ip 或者 ssh -p port user@server_ip 参数: -l 后接要登录的远程系统用户名 ...

  6. ssh远程登录命令简单实例

    ssh远程登录命令简单实例 ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh -h查 ...

  7. python实现ssh远程登录

    python实现ssh远程登录 # 测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT, # 使用SSH远程登陆到主机,然后执行相应的command即可 # python ...

  8. SSH(远程登录)原理

    最近在研究hadoop,因为是分布式的,会涉及很多机器协作工作,但所有的操作都是需要进行权限验证的,namenode主机会尝试启动datanode主机上的进程等等.下面就用一张图来解释SSH登录验证的 ...

  9. ubuntu拒绝root用户ssh远程登录解决办法

    ubuntu拒绝root ssh远程登录通常情况是ssh设置了禁止root远程登录,解决办法就是:修改ssh配置,然后重启ssh服务即可. vi /etc/ssh/sshd_config 找到并用#注 ...

  10. 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等

    一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...

随机推荐

  1. Android 外部存储权限分析

    不知道你有么有发现.来自菜鸟的成长史:http://blog.csdn.net/zjbpku/article/details/25161131. KitKat之后的版本号不再支持用户对外置SDcard ...

  2. Android中检測字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(一)

    package com.android.filebrowser;   import java.io.*; import java.net.*;   public class FileEncodingD ...

  3. JSP 获取Request 经常使用參数

    <input type="hidden" id="a" value="<%=request.getScheme()%>" ...

  4. LESS2CSS for sumlime text2

    Windows下的安装 Less2Css插件依赖lessc这个工具,在windows下可以下载或者用git cloneless.js-windows到本地目录.然后把目录地址加入到环境变量PATH的中 ...

  5. 深入理解android view 生命周期

    作为自定义 view 的基础,如果不了解Android  view 的生命周期 , 那么你将会在后期的维护中发现这样那样的问题 ....... 做过一段时间android 开发的同学都知道,一般 on ...

  6. CNN tensorflow text classification CNN文本分类的例子

    from:http://deeplearning.lipingyang.org/tensorflow-examples-text/ TensorFlow examples (text-based) T ...

  7. Coursera Algorithms week1 算法分析 练习测验: Egg drop 扔鸡蛋问题

    题目原文: Suppose that you have an n-story building (with floors 1 through n) and plenty of eggs. An egg ...

  8. Node.js+express 4.x 入门笔记

    一.新建node项目并实现访问 二.在express4.x下,让ejs模板文件,使用扩展名为html的文件 三.实现路由功能 四.session使用 五.页面访问控制及提示 六.代码下载地址 一.新建 ...

  9. jquery的ajax同步异步执行

    大家先看一段简单的jquery ajax 返回值的js 代码 function getReturnAjax{  $.ajax({    type:"POST",    http:/ ...

  10. 浅谈自学Python之路(day2)

    今天的主要内容是: 标准库 数据类型知识 数据运算 三元运算 bytes类型 字符串操作 字典 集合 标准库 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有 ...