导航:首页 > 编程大全 > ssh带密码

ssh带密码

发布时间:2022-12-28 08:46:18

⑴ 【linux】SSH 使用密码/公钥远程登录总结

本文是笔者查阅网上资料做的总结,关于SSH原理,什么是对称加密和非对称加密,本文不过多介绍。这里介绍一下SHH的工作过程、配制方法,可能出现的问题及解决方法。
说明:本文中涉及的例子,SSH客户端为:本地主机A,SSH服务器为:服务器B

SSH协议采用C-S(客户端-服务器端)架构进行双方的身份验证以及数据的加密。
服务器端组件监听指定的端口,负责安全连接的建立、对连接方的身份认证、以及为通过身份认证的用户建立正确的环境。
客户端负责发起最初的TCP握手、安全连接的建立、验证服务器的身份与之前记录中的一致、并将自己的验证信息提供给服务器。
一个SSH会话的建立过程分为两个阶段。第一阶段,双方沟通并同意建立一个加密连接通道以供后续信息传输用。第二阶段,对请求接入的用户进行身份验证以确定服务器端是否要给该用户开放访问权限。

当客户端发起TCP连接时,服务器端返回信息说明自己支持的协议版本,如果客户端上支持的协议与之匹配,则连接继续。服务器会提供自己的公共主机密钥(public host key)以让客户端确认自己访问的是正确的机器。

然后,双方采用一种Diffie-Hellman算法共同为该会话建立密钥。每一方的一部分私有数据,加上来自对方的一部分公共数据,通过这种算法计算,能够得出完全相同的密钥用于本次会话。

整个会话的通讯内容都使用该密钥进行加密。这个阶段使用的公钥/私钥对与用户验证身份用的SSH密钥是完全无关的。

经典Diffie-Hellman算法的计算步骤如下:

这个共享密钥的加密方式被称为二进制数据包协议(binary packet protocol)。该过程能够让双方平等的参与密钥生成的过程,而不是由单方掌握。这种共享密钥生成的过程是安全的,双方没有交换过任何未经加密的信息。

生成的密钥是对称式密钥,一方用于加密信息的密钥等同于另一方用于解密信息的密钥,而任何第三方由于不持有该密钥,是无法解密双方传递的内容的。

会话加密通道建立后,SSH开始进入用户认证阶段。

下一步,服务器验证用户身份以决定是否准许其访问。验证有不同的方式,选择的验证方式取决于服务器的支持。

最简单的验证是密码验证:服务器要求客户端输入密码,客户端输入的密码经过上述的通道加密传输给服务器。

虽然密码是加密过的,然而该方法仍然不被推荐,因为用户经常为了省事而使用过于简单的密码,而这类密码很容易就能够被自动化脚本破解。

最流行的验证方式是SSH密钥对,这也是当前最推荐的方式。SSH密钥对是非对称密钥,私钥和公钥分别用于不同的功能。

公钥用于加密,而私钥用于解密。公钥可以随意上传、共享,因为公钥的流通并不会危及到私钥的保密性。

SSH密钥对的验证过程起始于上一部分加密通道建立之后,其具体执行步骤如下:

简单来说,服务器端用公钥加密信息,客户端用私钥解密信息以证明自己持有私钥。该过程同时使用了对称加密和非对称加密,两种方式各有自己的功用。

命令如下:

用户名:为要登录的服务器B中已存在的用户账户名
IP地址:为服务器B的IP地址
-p 端口号:用来指定端口号,默认为22

第一次登录时,会提示如下提示:

大概意思是说,你正在访问的主机不能验证它的真实性,它的RSA key(当前访问主机的公钥)指纹是怎样的,你确定要继续连接吗?
输入yes继续,会提示,已永久把当前访问主机的RSA key添加到了已知主机文件(用户目录下,.ssh 文件夹中的knwon_hosts文件)中。之后再次 SSH 登录就不再有该提示了。
接着,输入登录账户的密码即可。

SSH 密码登录,需要服务器开启密码验证权限,编辑服务器SSH配置命令如下:

在 sshd_config 文件中,Protocol 2 下面 #PasswordAuthentication yes,将前面的#号去掉,保存退出。

公钥登录,即免密码登录。避免的每次登录都要输入的麻烦,也防止了中间人攻击。是SSH远程登录最常用的登录方式。

提示输入密钥对名称,直接回车,使用默认名称即可;
提示输入密码(使用私钥时,要输入密码),直接回车,不使用密码即可。

首先,登录服务器B,在进行下面的操作。

找到 #PubkeyAuthentication yes,删除 #号,保存退出。

重启 ssh 服务

也可指定验证私钥:

本地主机A,生成密钥对后:

sudo vim /etc/selinux/config

⑵ SSH连接密码怎么获取

修改你的ssh配置文件,将其中的PermitRootLogin的参数设置为yes
配置文件路径如:/etc/ssh/sshd_config

重启ssh服务,命令如下:

/etc/init.d/sshd restart

/etc/init.d/ssh restart

然后修改root的密码,将密码修改为123456.

⑶ SSH 密码与秘钥登录方式

密码登录顾名思义极其简单,登录之前需要在ssh服务器上有相应的用户名与登录密码。

密码登录命令行:ssh username@hostname -p port
username:登录用户名
hostname:ssh服务器,既可以是ip也可以是域名
port:这个为可选项,即ssh服务器的端口,如果为空则默认端口为22

秘钥登录使用加密的

终端下生成秘钥命令:ssh-keygen -t rsa(如果不输入密码,则不需要密码)
生成过程中会提示输入秘钥文件的名称,如果输入为 Key,则会生成 Key 与 Key.pub 两个文件, Key为私钥,Key.pub为公钥。将Key放入本机用户目录的 .ssh目录下,将.ssh目录权限改为700

将生成的公钥 Key.pub 上传至目标服务器,并将Key.pub放置于用户目录的.ssh目录,同样.ssh目录权限也为700
然后执行 cat Key.pub >> authorized_keys 将公钥导入,并确定authorized_keys权限为 600

秘钥配置好后,可以执行 ssh -i Key username@hostname -p port
ssh 默认秘钥为 id_rsa, 需要加上参数-i 指明秘钥

⑷ ssh localhost 配置免密登陆仍需要密码的解决方法

最近在看spark的书籍,书中第一步搭建单机spark的时候,有一个操作是设置ssh无密码的登陆了。万万没想到,在这一步就卡住了。已经成功配置了免密登陆,但是ssh localhost还是需要输入密码。在阿里云香港服务器挂掉之后,网络了两天才找到解决方法。特此记录。

查看日志是分析问题中很重要的一环,因为ssh中会出现各种不同的问题,每种问题的解决方法不一样。

ssh -vvv localhost 报的错误信息

日志显示ssh跳过了dsa的认证方式,最后只能通过密码认证的方式。

通过查询资料发现,ssh 7.0之后就已经默认关闭了dsa认证方式。

于是修改ssh的配置文件ssh_config,在验证方式中加入dsa

按照教程修改完配置文件后,ssh localhost任然需要输入密码,查看日志如下。·

可以看出修改过后,ssh时已经提供了DSA秘钥,但是好像校验没有通过,所以最后还是进入了输入密码验证的环节。
通过查阅资料和自己推理,问题可能出在服务端校验不通过,因为服务器端也不支持dsa这种认证方式,那就试着修改一下服务器端的配置文件。

ssh_config 和 sshd_config 分别是ssh客户端和服务器端的配置文件,ssh localhost就是一个本地客户端向本地服务器请求的过程。

修改sshd文件后,ssh localhost还是需要密码。就在我差点自闭的时候,看到有帖子说要重启一下ssh服务器。

重启完成后,ssh localhost免密登陆成功。长舒一口气。
后来经过测试,修改ssh配置文件不用重启服务,但是修改sshd配置文件,是要重启才能生效的。

据说是因为dsa是不加密的,后面都改用rsa了,遇上同样问题的小伙伴可以自己去查一下。

``

⑸ ssh登录自动输入密码

现有解决方案有expect 和 sshpass 等第三方解决方案,因不想引入过多依赖决定自己实现。

通过查找 资料 发现以上方案是对tty直接写入来达到效果,但是我用bash脚本直接对tty写入确只能在屏幕显示,不能被程序获取,于是转入使用ruby按照以上资料来自己实现,

发现将第6,7,8行注释掉之后报如下错误:

对ssh_askpass 查找 资料 发现环境变量 SSH_ASKPASS DISPLAY可以定义一个程序用来在ssh没有联接终端时提供密码。

**SSH_ASKPASS **设为提供密码的程序

DISPLAY 设为 :0

测试发现ssh 调用 SSH_ASKPASS 定义的程序时,带 参数执行,如

***# $SSH_ASKPASS * [email protected]'s password:

只要程序打印正确密码,ssh即可验证通过,于是问题解决,也不需要用ruby去实现了。

示例如下:

项目GitHub地址

这样即可自动输入密码ssh登录。

网上几乎都是expect 和 sshpass等方案来实现自动输入密码,此方法原理网上资料少有,记录之。

2016.11.24

⑹ 关掉 ssh 的密码登陆

0.检查是否已经安装 ssh-keygen 了

如果出现上面的错误需要从 1.安装 ssh-key 开始;否则从 2.创建授权文件 开始。

1.安装 ssh-key

安装 RSA 的 key,一路 ENTER 就行了。

2.创建授权文件

将本地的 id_rsa.pub 的内容写入 authorized_keys , 注意:是本地的,不是服务器的 。

3.免密码登陆测试

理论上,直接就登陆上去了

1.修改配置文件

修改一下内容,一般都已经设置了,修改一下就好了, 不要添加哦 。

2.重启 ssh 服务

OK,这样就可以防止别人破解密码了

关闭SSH传统密码登陆方式

⑺ windows下ssh如何设置用户密码

windows下ssh设置用户密码步骤如下:
1、创建公钥、公钥
ssh-keygen -t rsa
出现提示后,直接回车到最后一步。
2、把公钥 id_rsa.pub 复制到远程机器的 /home/username/.ssh目录 并命名为 authorized_keys
方法1: 一步到位:scp ~/.ssh/id_rsa.pub username@hostname:~/.ssh/authorized_keys

方法2: 复制 scp ~/.ssh/id_rsa.pub username@hostname:~
登陆 ssh username@hostname
追加 cat id_rsa.pub >> .ssh/authorized_keys
复制过去就可以,多台远程主机就多次复制。 如果你本机登陆用户和远程登陆用户一致的话,就可以直接 ssh hostname直接登陆。

3、解决本地登陆用户与远程登陆用户不一致
虽然不用输入密码了,但是还得 ssh username@hostname 来登陆,很不方便。 解决很简单,修改本地登陆用户的 ~/.ssh/config 文件,如果没有的话就自建一个,内容如下:
Host hostname
user username
Host hostname2
user username2
这样,本地和远程登陆用户名不一致也可以 ssh hostname 登陆了。

⑻ linux ssh 带密码

可以用expect实现,下面是个通用的,参数分别是用户名、密码、远程主机名/IP、和执行的命令,可以根据自己需要修改:

#!/usr/bin/expect

set timeout 3

set username [lindex $argv 0]
set password [lindex $argv 1]
set remhost [lindex $argv 2]
set command [lindex $argv 3]
spawn ssh $username@$remhost $command

expect {
"*re you sure you want to continue connecting*"
{
send "yes\n"
expect {
"*assword*"
{
send "$password\n"
}
}
}
"*assword*"
{
send "$password\n"
}
}
expect eof

⑼ linux怎么修改ssh密码

1、把远程主机抄ip和端口号填写上然后袭选择连接方式为“SSH”。单击“打开”,就成功连接远程的Linux服务器。

⑽ 如何自动输入密码ssh连接到其他机器

主要的解决方法有三种:
1. 生成ssh公钥,建立和对方机器的信任关系;
2. 使用expect脚本;
3. 使用sshpass。
这里介绍一下sshpass相关内容
下载并安装sshpass):
# tar zxvf sshpass-xxxx.tar.gz
# cd sshpass-xxxx
# ./configure
# make && make install

基本用法:sshpass -p [密码] ssh [user]@[host]
免去第一次登录机器时的确认提示(Are you sure you want to continue connecting (yes/no)):
sshpass -p [密码] ssh [user]@[host] -o StrictHostKeyChecking=no
后面也可以跟上其他ssh命令,如scp等
例1,公司的一个环境,大部分机器的login密码是"1root",少部分是"123qwe",新建一个hssh.sh文件,按如下修改,到/usr/bin/目录下。

[cpp] view plain
#!/bin/sh

#_main_
temp_file=/tmp/hssh.1
ip=192.168.$1
case "$1" in
"204.188"|"207.31"|"205.199") password="123qwe";;
*) password="1root"
esac

sshpass -p $password ssh root@$ip -o StrictHostKeyChecking=no 2>$temp_file
if [ $? != 0 ];then
#for some reason,machine had reinstall, we need to delete that IP address in known_hosts file before ssh it.
grep -q "REMOTE HOST IDENTIFICATION HAS CHANGED" $temp_file
if [ $? = 0 ];then
key_file=`grep "Offending key in" $temp_file | cut -d' ' -f 4 | cut -d ':' -f1 2>/dev/null`
cat $key_file | grep -v "$ip" > $temp_file
sudo cp -v $temp_file $key_file
sshpass -p $password ssh root@$ip -o StrictHostKeyChecking=no 2>$temp_file
fi
fi

那么我们每次只要输入hssh XXX.XXX 等就可以ssh到对应机器上了

阅读全文

与ssh带密码相关的资料

热点内容
可以去哪里找编程老师问问题 浏览:608
win10lol全屏 浏览:25
qq图片动态动漫少女 浏览:122
sai绘图教程视频 浏览:519
如何分析加载减速法数据 浏览:672
手机怎么免费转换pdf文件格式 浏览:668
在哪个网站可以驾照年检 浏览:89
iphone可以播放ape吗 浏览:991
matlabp文件能破解吗 浏览:817
四川省高三大数据考试是什么 浏览:457
导出打开java文件 浏览:671
win10蓝屏是硬盘坏了么 浏览:46
沈阳哪里适合学编程 浏览:811
django19常用版本 浏览:521
三国志11保存在哪个文件夹 浏览:88
iphone4s加速 浏览:108
编程内存和显卡哪个重要 浏览:672
android连接网络打印机 浏览:195
linuxsftp如何上传文件 浏览:603
苹果文件覆盖 浏览:327

友情链接