ssh远程登录_ssh登录命令-程序员宅基地

技术标签: 运维  ssh  

目录

一、ssh简述

1、常见的ssh协议使用的工具

2、sshd服务

3、ssh原理

二、ssh登录设置

登录

不登陆,查看对方主机的信息

三、ssh服务端配置及ssh优化

1、服务端配置

 2、ssh优化

 四、使用密钥对免密登录

 原理

操作

方法一:手动

 方法二:写脚本,使该网段的都可以免密登录

五、ssh客户端 

1、scp命令

2、sftp命令


一、ssh简述

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度

优点:

  • 数据传输是加密的,可以防止信息泄漏

  • 数据传输是压缩的,可以提高传输速度

1、常见的ssh协议使用的工具

客户端:

  1. Linux Client: ssh, scp, sftp,slogin
  2. Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient

其中xshellMobaXterm经常被使用,而区别在于xshell非开源的,MobaXterm是开源的,且功能较多。

OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。

所以在CentOS 7中默认安装了openssh相关的软件包,且将sshd服务设置为开机自启。

openssh是ssh软件的软件包名,安装的时候使用openssh

sshd是ssh软件的服务名,在启用ssh软件前需要先启动sshd服务

ssh是软件名,远程连接使用的
例如:ssh  192.168.3.101

2、sshd服务

sshd服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)

作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。

服务名称:sshd


服务端主程序:/usr/sbin/sshd  


服务端配置文件:/etc/ssh/sshd_config 

# 为服务器端配置文件,设置与服务端相关的应用可通过此文件实现


客户端配置文件:/etc/ssh/ssh_config             

#为客户端配置文件,设置与客户端相关的应用可通过此文件实现

3、ssh原理

1)客户端发起连接请求

2)服务端向客户端发送自己的公钥和一个会话ID

3)客户端得到服务端的信息后,通过算法生成密钥,结合自己的公钥生成密钥对,然后将密钥对发送给服务端

4) 服务端收到后,使用自己的私钥进行解密,拆分出客户端的公钥

5)最后,客户端拥有自己的公钥和私钥以及服务端的公钥,服务端拥有自己的公钥和私钥以及客户端的公钥

二、ssh登录设置

登录

命令格式:ssh        [选项]        [用户名@]IP地址       [-p]        端口号

选项:

-l        指定登录名称;                        -t        跳板登录,即通过另一台主机连接第三台主机

例1:什么选项都不加

[root@heitui ~]#ssh 192.168.3.101

 例2:指定登录名称

[root@heitui ~]#ssh -l lisi 192.168.3.101        # 方式一
[root@heitui ~]#ssh [email protected]        # 方式二

例3:通过跳板连接第三台主机

root@heitui ~]#ssh -t 192.168.3.101 ssh 192.168.3.102

例4:修改端口号,使用其他端口登录

# 修改端口号

[root@server1 ~]#vim /etc/ssh/sshd_config

# 第17行   Port   22   

# 将22改为9527
 

[root@heitui ~]#ssh 192.168.3.101 -p 9527 


不登陆,查看对方主机的信息

格式:ssh    目标主机IP   命令

例如:查看对方的网卡信息

[root@heitui ~]#ssh 192.168.3.101 ifconfig

三、ssh服务端配置及ssh优化

1、服务端配置

配置文件/etc/ssh/sshd_config

常用配置项:



白名单与黑名单设置

白名单

AllowUsers    用户名,用户名,用户名.....

例如:仅允许lisi用户登录

AllowUsers   lisi


 

 黑名单

DenyUsers     用户名,用户名,用户名.....

例如:不允许lisi用户登录

DenyUsers   lisi


 2、ssh优化

  • 建议使用非默认端口 22

  • 禁止使用protocol version 1

  • 限制可登录用户 白名单

  • 设定空闲会话超时时长

  • 利用防火墙设置ssh访问策略

  • 仅监听特定的IP地址 公网 内网

  • 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs

  • 使用基于密钥的认证

  • 禁止使用空密码

  • 禁止root用户直接登录

  • 限制ssh的访问频度和并发在线数

  • 经常分析日志 分离

 四、使用密钥对免密登录

 原理

  1. 首先在客户端生成一对密钥(ssh-keygen)

  2. 并将客户端的公钥ssh-copy-id 拷贝到服务端

  3. 当客户端再次发送一个连接请求,包括ip、用户名

  4. 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc

  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

操作

方法一:手动

1、生成密钥文件

[root@heitui ~]#ssh-keygen -t ecdsa

 2、将密钥文件传到对面

[root@heitui ~]#cd .ssh/

[root@heitui .ssh]#ssh-copy-id -i id_ecdsa.pub 192.168.3.101

 方法二:写脚本,使该网段的都可以免密登录

1、编写脚本

[root@heitui ~]#cd .ssh/
[root@heitui .ssh]#vim mmdl.sh

#!/bin/bash
PASS=123123
#设置网段最后的地址,4-255之间,越小扫描越快
END=254

IP=`ip a s ens33 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.

rm -f /root/.ssh/id_rsa
[ -e ./SCANIP.log ] && rm -f SCANIP.log
for((i=3;i<="$END";i++));do
ping -c 1 -w 1  ${NET}$i &> /dev/null  && echo "${NET}$i" >> SCANIP.log &
done
wait

ssh-keygen -P "" -f /root/.ssh/id_rsa
rpm -q sshpass || yum -y install sshpass
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP

AliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
done

:wq        # 保存并退出

2、执行脚本

[root@heitui .ssh]#bash mmdl.sh        # 执行以下脚本即可实现免密登录 

 3、免密登录

五、ssh客户端 

1、scp命令

远程安全复制

格式:scp      本机文件路径     对方主机的IP地址:文件路径  

 # 将本机文件拷贝到对方主机中


scp        对方主机的IP地址:文件路径        本机文件路径

# 将对方主机中的文件拷贝到本机中


2、sftp命令

安全FTP上传和下载

 格式:sftp user@ip         #登录到服务器

sftp> get etc/passwd /opt/        # 下载文件到本地文件夹内

sftp> put etc/passwd /opt/         # 上传载文件到服务器文件夹内

下载文件、退出sftp
get         #下载文件
get -r      #下载目录
quit        #退出sftp
put         #上传文件
put -r      #上传文件夹
退出命令:quit、exit、bye都可以

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/x74188/article/details/132129107

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签