我将公共ssh密钥添加到authorized_keys文件中. ssh localhost应该登录我而不要求密码.
我这样做并尝试打字ssh localhost,但它仍然要求我输入密码.我还有其他任何设置可以让它运作吗?
我遵循了更改权限的说明:
如果我这样做,下面是结果 ssh -v localhost
debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: …Run Code Online (Sandbox Code Playgroud) 我设置了一个git服务器,现在想要从客户端推送我的repo.我使用git push origin master并收到此错误消息:
fatal: protocol error: bad line length character: Unab
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题.我不知道"Unab"是什么.我试图调整shell的大小,但它仍然是"Unab".我找不到此错误消息的解决方案.
我用"authorized_keys"和SSH设置服务器.(我可以使用SSH连接到它.)
这似乎是一个git问题?
BTW:服务器设置在Windows 7 VM中
我已经创建了一个RSA公钥,我想将其添加到authorized_keys文件中,但是我的Ubuntu 11.10机器中没有这样的文件.
如何将密钥添加到authorized_keys?
如何使用单个命令从本地计算机上使用id_rsa.pub密钥在远程服务器上附加authorized_keys?
我在使用Ansible时相当新,并且一直在这里阅读谷歌并且还没有找到答案.
我的情况是我在服务器上有1个用户,但需要在其authorized_keys文件中放入2-3个不同的pub键.
我可以成功删除所有密钥,或使用此脚本添加所有密钥:
---
- hosts: all
tasks:
- name: update SSH keys
authorized_key:
user: <user>
key: "{{ lookup('file', item) }}"
state: present
#exclusive: yes
with_fileglob:
- ../files/pub_keys/*.pub
Run Code Online (Sandbox Code Playgroud)
随着present标志,它读取并添加所有键.使用该absent标志,它将删除列出的所有键.
问题是我有一个仅在服务器上的旧密钥,我想删除/覆盖它,并且为将来的部署覆盖可能在服务器上而不是在我的剧本中的任何未授权密钥.
使用exclusive标志它只需要最后一个键并添加它.如果它循环并重复添加所有键,这将是太棒了.如果有一种方法可以在Ansible中执行此操作,我还没有找到它.
有没有办法循环pub文件并同时使用该exclusive选项?
我知道这对你们中的一些人来说可能是微不足道的.
我不是linux专家,我正在尝试使用git.为此,我想尝试将我的公共SSH密钥添加到~/.ssh/authorized_keys我的用户git中.
但问题是,当我使用git用户使用putty登录到我的服务器时,我无法访问任何调用的文件~/.ssh/authorized_keys.
所以我试着用root做到这一点,也许这就是解决方案,但我认为authorized_keys每个用户都有一个.
我可以看到授权的密钥,但我不想把所有东西弄得一团糟,所以我想清楚这一点.有没有办法使用我的git用户帐户并修改ssh/authorized_keys?
非常感谢!
如何将多个文件的内容连接成一个变量?
这是问题所在:我正在尝试为远程计算机上的用户设置公钥.来自authorized_key文档的示例几乎可以正常工作:
- name: Set up authorized_keys for the deploy user
authorized_key: user=deploy
key="{{ item }}"
with_file:
- public_keys/doe-jane
- public_keys/doe-john
Run Code Online (Sandbox Code Playgroud)
但事实上我需要使用exclusive=yes,因此在更新后,所有未提供的公钥都将被删除.
如果exclusive=yes提供了,那么只有列出的最后一个公钥保留在.ssh/authorized_keys文件中(也报告为错误).
我目前的做法:
- name: create empty temporary keys file
local_action: "shell > /tmp/auth_keys"
- name: concat keys to temporary file
local_action: "shell echo {{ item }} >> /tmp/auth_keys"
with_file:
- public_keys/doe-jane
- public_keys/doe-john
- name: set up authorized_keys
authorized_key: user=deploy
key="{{ lookup('file', '/tmp/auth_keys') }}"
exclusive=yes
Run Code Online (Sandbox Code Playgroud)
这有效但前两个命令总是产生"已更改".此外,我觉得必须有一个更优雅的解决方案.
那么,有没有办法将几个文件的内容连接成一个变量?或者这项任务有更好的方法吗?
我有一个让我发疯的问题...我现在尝试修复它至少 2 个小时 - 但我不是很成功。
问题本身:我在一个应该托管我们的 git 和 gitolite 环境的虚拟机上安装了 CentoS7(我不知道这是否是 CentOs 7 的特定行为)。我安装了所需的服务和用户。一切运行良好,我可以通过 SSH 使用密码和基于密钥的身份验证进行连接。所有用户的主目录都位于 /home/ 中。现在,我想添加一个新用户 (git),其中 /srv/data/home/git (/srv 位于单独的分区上)作为主目录,并启用基于密钥的身份验证。两个分区都是 ext4 格式。
grep git /etc/passwd
git:x:1000:1000::/srv/data/home/git:/bin/bash
Run Code Online (Sandbox Code Playgroud)
我安装了 gitolite 并根据官方文档创建了用户:
su - git
mkdir -p ~/.ssh
chmod 700 ~/.ssh
mkdir gitclone-dir
cd gitclone-dir
git clone git://github.com/sitaramc/gitolite
cd gitclone-dir
gitolite/install -ln ~/bin
gitolite setup -pk /srv/data/home/git/.ssh/git_admin.pub
Run Code Online (Sandbox Code Playgroud)
gitolite setup 命令的输出是:
在 /srv/data/home/git/repositories/gitolite-admin.git/ 中初始化了空 Git 存储库 在 /srv/data/home/git/repositories/testing.git/ 中初始化了空 Git 存储库 警告:/srv/data/home /git/.ssh/authorized_keys 丢失;创建一个新的(这在全新安装中是正常的)
下一步包括克隆 gitolite-admin 存储库,该存储库不断失败:
marcel@mw-ws:~/Sources/juwimm_git/ayeq-benu$ git ls-remote git@192.168.10.35:gitolite-admin.git
git@192.168.10.35's …Run Code Online (Sandbox Code Playgroud) 我正在尝试为 Google Cloud VM 中托管的软件设置 Jenkins。我有一个具有用户帐户 A 和用户帐户 B 的虚拟机。Jenkins 托管在用户帐户 A 中。所有其他软件都托管在用户帐户 B 中。为了授权 Jenkins ssh 到 userB@VM_ADDRESS,我将用户 A 的 . ssh/id_rsa.pub 进入用户 B 的 .ssh/authorized_keys。这允许 Jenkins 每当我将更改推送到 Github 时就可以 ssh 到 userB@VM_ADDRESS 来更新我的软件。然而,过了一段时间,由于某种原因,用户帐户 B 中的 .ssh/authorized_keys 被替换/刷新,我的密钥消失了,Jenkins 的 ssh 将因权限被拒绝而失败。我应该如何解决这个问题?或者我做詹金斯错了?
我在https://groups.google.com/g/gce-discussion/c/iHqRb2KlMZg/m/x59xV4pYAQAJ?pli=1上看到了这个帖子,这似乎是一个类似的问题,但读完后我仍然不知道我在做什么需要做。
在无密码ssh-login之后,Linux中是否有任何方法可以检索登录的远程用户的身份?
我想在登录脚本中采取一些不同的操作,具体取决于我执行ssh-login的远程主机/用户ID.
我设置了支持ssh的Docker镜像.没问题,很多例子.但是,大多数示例都显示使用passwd设置密码.我想发布我的图片.拥有固定密码,尤其是root用户,似乎是一个巨大的安全漏洞.对我来说,更好的方法是使用没有密码的root设置映像.当用户获取图像时,他们会将其公共ssh文件复制到图像/root/.ssh/authorized_keys文件中.
有推荐的方法吗?
我在Amazon AWS EC2上运行Ubuntu实例.我有一个名为ubuntu的root用户.我还有另一个名为ellis的用户.我的ubuntu用户是管理用户,可以控制所有其他用户并在根目录中创建文件和目录.
当我将.hh/authorized_keys从/home/ubuntu/.ssh/authorized_keys复制到/home/ellis/.ssh时,我必须不小心删除了ubuntu中的目录.ssh.现在,我无法以ubuntu身份登录我的实例,只能以ellis身份登录.我尝试在ellis中更改权限以获取对ubuntu的访问而没有运气.
我使用FileZilla作为ellis并且能够看到ubuntu中的目录和文件,这就是我知道.ssh从ubuntu中删除的原因.
我需要能够访问ubuntu.我已经尝试将我的ssh目录从ellis复制到ubuntu,但是使用设置的权限,其他用户无法进行任何管理.有任何解决这个问题的方法吗?
authorized-keys ×12
ssh ×8
ansible ×2
git ×2
public-key ×2
sshd ×2
ubuntu ×2
amazon-ec2 ×1
docker ×1
jenkins ×1
key ×1
linux ×1
login ×1
ssh-keys ×1
ubuntu-11.10 ×1