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

ssh localhost 配置免密登陆仍需要密码的解决方法,第1张

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

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

ssh -vvv localhost 报的错误信息

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

通过查询资料发现,ssh 70之后就已经默认关闭了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了,遇上同样问题的小伙伴可以自己去查一下。

``

MMC 不能打开文件C:\windows\system32\dsamsc的一种解决方法
问题:点击域控制器(Active Directory)下的“管理Active Directory中的用户和计算机”时d出“MMC 不能打开文件C:\windows\system32\dsamsc。这可能是由于文件不存在,不是一个MMC控制台,或者用后来版本的MMC创建。也可能是由于您没有访问此文件的足够权限。”
解决方法:如果之前将win2003升级到SP2,后来又卸载SP2,后出现的这种错误,那是因为升级SP2时会将所有的MMC升级到30,但是卸载SP2后,MMC不会回滚,而SP1默认是用MMC20的,用MMC20打开MMC30的文件会因为权限问题而出错,所以可以尝试下载并安装MMC30,问题可能能被解决。MMC30官方下载地址>

在CRT本地建立密钥对,在CRT里的配置有如下几步:

1、 打开你的CRT,并且点开工具,点击创建公钥;

2、 这里是密钥类型的选择;

3、虽然日后我们可以不再通过密码进行认证,但是如果你想更加安全还是可以加上额外的口令,如果不设置短语可以留空;

4、密钥会自己生成,点击下一步

5、这里我使用的是默认的标准公钥和VanDyke私钥格式

6、根据安全需求选择你的长度,这里我选择的是默认的1024

7、选择完密钥长度会d出这个选择,因为我只配置一个连接,所以我选择的否

8、接下来我们打开要实现CRT远程连接的linux系统命令终端,进行如下配置:

oldman@apache:~$ cd ~          进入家目录

oldman@apache:~$ pwd           查看路径

/home/oldman

oldman@apache:~$ mkdir ssh    创建ssh目录

oldman@apache:~$ ls -la        查看列表可以看到ssh已经创建

drwx------   3 oldman oldman 4096 3月   2 13:59

drwxr-xr-x 28 root   root   4096 3月   2 13:52

-rw-r--r--   1 oldman oldman   18 10月 16 21:56 bash_logout

-rw-r--r--   1 oldman oldman  176 10月 16 21:56 bash_profile

-rw-r--r--   1 oldman oldman  124 10月 16 21:56 bashrc

drwx------   2 oldman oldman 4096 3月   2 13:59 ssh

oldman@apache:~$ chmod 700 ssh/   修改ssh目录权限,权限一定要对

oldman@apache:~$ ls -ld ssh/      检查一下

drwx------ 2 oldman oldman 4096 3月   2 13:59 ssh/

oldman@apache:~$ cd ssh/          进入到ssh

oldman@apache:~/ssh$ rz -y        把之前的pub结尾的公钥文件上传到服务器

oldman@apache:~$ ls -ll            检查

-rw-r--r-- 1 oldman oldman  725 3月   9 2015 Identitypub  刚刚的公钥文件

9、名字改为服务器下sshd配置文件下设定好的公钥名字 authorized_keys      

oldman@apache:~/ssh$ ssh-keygen -i -f Identitypub >authorized_keys                     oldman@apache:~/ssh$ ll           进行检查

-rw------- 1 oldman oldman 1200 3月   2 19:58 authorized_keys

-rw-r--r-- 1 oldman oldman  725 3月   9 2015 Identitypub

至此,服务器端的配置就OK啦!

ssh项目id类型不匹配是指在ssh连接中,客户端和服务器端使用的项目id类型不一致,导致无法建立连接。这种情况一般是由于客户端和服务器端使用的ssh协议版本不同,或者客户端使用的ssh协议版本比服务器端低,导致客户端不支持服务器端使用的项目id类型,从而无法建立连接。为了解决这个问题,可以尝试升级客户端的ssh协议版本,或者降低服务器端的ssh协议版本,以确保客户端和服务器端使用的项目id类型一致,从而解决ssh项目id类型不匹配的问题。

:TLS/SSl(libssl,libcryto,openssl),TSL PKI

telnet,TCP/23,远程登录
认证明文(密码认证)
数据传输明文

ssh:Secure Shell ,TCP/22
C/S架构 套接字监听

SSH --> SSH

openssh(开源) 即是协议,又是软件

ssh V1(中间人攻击),V2

客户端:
LINUX:ssh
Windows:putty,SecureCRT(商业版),SSHsecureShellClient,Xmanger

服务器端:(linux,unix)
sshd

openssh(ssh,sshd)

ssh--->telnet

ssh:主机密钥
client-------->server
yes:接受服务器主机发来的公钥
RSA,DSA
客户端生成临时对称密钥(会话)随机生成
对称密钥使用服务器的公钥加密后传给服务器,只有服务器的私钥可以解密。

账号和密码用对称密钥加密后传给服务器进行认证。
认证通过,建立一个永久的会话通道。

基于口令的认证
基于密钥的认证

客户端生成一对密钥,公钥传到服务器的对应用户的家目录下,身份认证是客户端利用自己的私钥加密一段数据,服务器用客户的公钥解密。可解,则认证通过。

不允许root直接登录,而是用普通用户,在su切换。

一台主机为客户端(基于某个用户实现 ),

基于ssh的远程复制命令,可以实现在主机之间传输数据。

安装域控制器后,你就会多出两个策略:
default
domain
controllers
policy(默认域控制器策略);
default
domain
policy(默认域策略)。
域控制器策略只对域中安装域控制器的那台计算机,域策略对整个域生效。
打开方法:
dsamsc-右击Domain
Controllers属性-组策略-双击default
domain
controllers
policy
dsamsc-右击你的域名属性-组策略-双击default
domain
policy。
比较实用的权限:
软件的分发、禁止某个程序的运行、统一规范管理(如统一桌面)、审核登录事件、审核对象访问等等。
具体的用法要自己体验后才清楚。
你如果有条件的话实机 *** 作,没条件的话用虚拟软件(vmware)。
希望我的回答能帮得上你,有什么问题可以百度我。

ssh-keygen 命令 用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。SSH 密钥默认保留在 ~/ssh 目录中。如果没有 ~/ssh 目录,ssh-keygen命令会使用正确的权限创建一个。

执行完命令后,会有几个选项给你选择,一般来说直接回车,使用默认配置即可。需要注意的是, 如果本身服务器已经生成过ssh秘钥了,这一步可以省略
想知道秘钥曾经生成过,可以看步骤二。

正常来说,如果 ssh-keygen 命令执行成功,我们可以在目录中看到有 id_rsa (存放私钥)和 id_rsapub (存放公钥)两个文件

先简单介绍一下 ssh-copy-id 命令

ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上。authorized_keys 文件用来验证 client 。使用 ssh-copy-id 命令将本地公钥复制到远程主机之后可以实现免密登录远程主机。如果不传入 -i 参数, ssh-copy-id 使用默认 ~/ssh/identitypub 作为默认公钥。 如果多次运行 ssh-copy-id ,该命令不会检查重复,会在远程主机中多次写入 authorized_keys 。

注意,本地 ~/ssh/id_rsa 的权限,chmod 400 ~/ssh/id_rsa ,该文件包含用于授权的私钥, 如果该文件可以被其他用户访问,ssh 会忽略该私钥。

执行完上述命令后,我们后续就可以免密登录其他服务器了。

如果需要配置免密登录的服务器比较多,我们可以通过脚本来解决这些重复性的动作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13483920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-16
下一篇 2023-08-16

发表评论

登录后才能评论

评论列表(0条)

保存