前段时间我注意到curl作为命令行参数提供的用户名和密码没有出现在ps输出中(尽管它们当然可能出现在您的 bash 历史记录中)。
它们同样不会出现在/proc/PID/cmdline.
(不过,可以推导出组合的用户名/密码参数的长度。)
演示如下:
[root@localhost ~]# nc -l 80 &
[1] 3342
[root@localhost ~]# curl -u iamsam:samiam localhost &
[2] 3343
[root@localhost ~]# GET / HTTP/1.1
Authorization: Basic aWFtc2FtOnNhbWlhbQ==
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: localhost
Accept: */*
[1]+ Stopped nc -l 80
[root@localhost ~]# jobs
[1]+ Stopped nc -l 80
[2]- Running curl -u iamsam:samiam localhost &
[root@localhost ~]# ps -ef | grep curl
root 3343 3258 0 …Run Code Online (Sandbox Code Playgroud) 我需要允许用户martin切换到martin-test没有密码的用户
su - martin-test
Run Code Online (Sandbox Code Playgroud)
我认为这可以在/etc/pam.d/su. 该文件中已经有一些可以取消注释的行。但是,我不喜欢将 user 添加martin到 group的想法wheel。我不希望给martin任何更多的特权,而不是能够切换到martin-test。我也不想用sudo。
在保持用户权限martin最小的情况下,最好的方法是什么?
我想向 Red Hat Linux 添加一个用户,该用户不会使用密码登录,而是使用公钥进行 ssh。这将在命令行上。
每次通过 ssh 连接到远程服务器时,我都需要提供密码。我使用以下命令将我的公钥 (id_dsa.pub) 复制到远程服务器:
ssh-copy-id -i id_dsa.pub user@server
Run Code Online (Sandbox Code Playgroud)
我检查它是否正确添加到authorized_keys。所有文件/目录权限都正确:
~user 755
~user/.ssh 700
~user/.ssh/authorized_keys 640
~user/.ssh/id_dsa.pub 644
Run Code Online (Sandbox Code Playgroud)
/etc/ssh/sshd_config 中的 PasswordAuthentication 字段设置为 yes。我将 sshd 置于调试模式并将详细开关添加到 ssh 命令。我的印象是服务器没有尝试使用 id_pub.dsa 因为线路
Skipping ssh-dss key: ........... not in PubkeyAcceptedKeyTypes
Run Code Online (Sandbox Code Playgroud)
服务器端没有加密光盘。任何想法如何进步?这是 ssh 守护进程调试信息:
sudo /usr/sbin/sshd -d
====
debug1: sshd version OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: key_parse_private2: missing begin marker
debug1: read …Run Code Online (Sandbox Code Playgroud) foo.php例如P455w0rd,当我尝试使用它时,我将 MySQL 密码保存在一个文件中:
$ cat foo.php | grep '$dbpwd=' | cut -d '"' -f 2 | mysql -U root -p mydb -h friendserver
Enter password: (holds)
$ echo P455w0rd | mysql -u root -p mydb -h friendserver
Enter password: (holds)
Run Code Online (Sandbox Code Playgroud)
这两个选项仍然要求输入密码,从 发送密码的正确方法是stdin什么?
我想将我在 Debian 网络服务器上分配给 root 的密码更改为更长更安全的密码。
我怎么做?我没有忘记/丢失当前密码,我只是想更改它。
假设我使用sha1pass在命令行上生成一些敏感密码的哈希值。我可以sha1pass mysecret用来生成一个散列,mysecret但这有一个mysecret现在在 bash 历史中的缺点。有没有办法在避免mysecret以纯文本显示的同时实现此命令的最终目标,也许是通过使用passwd-style 提示?
我也对将敏感数据传递给任何命令的通用方法感兴趣。当敏感数据作为参数(例如 in sha1pass)或在 STDIN 上传递给某个命令时,该方法会发生变化。
有没有办法做到这一点?
编辑:这个问题引起了很多关注,下面提供了几个很好的答案。总结如下:
sha1pass在我的 OP 中只是一个例子,但讨论已经确定存在更好的工具来获取 STDIN 上的数据。所以,总而言之,我接受了@Jonathan 的回答,因为这是最好的解决方案,因为您有一个设计良好且行为良好的程序可供使用。尽管将密码或机密作为命令行参数传递从根本上说是不安全的,但其他答案提供了减轻简单安全问题的方法。
ssh 不允许我登录,因为帐户已锁定。我想在我的服务器上解锁用户以通过 ssh 进行公钥授权,但不启用密码登录。
我试过了:
# passwd -u username
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.
Run Code Online (Sandbox Code Playgroud)
身份验证日志条目:
Mar 28 00:00:00 vm11111 sshd[11111]: User username not allowed because account is locked
Mar 28 00:00:00 vm11111 sshd[11111]: input_userauth_request: invalid user username [preauth]
Run Code Online (Sandbox Code Playgroud) 如何配置我的系统以在输入特定密码时销毁所有个人数据?这背后的动机是 NSA 的东西。
我想有三个主要用例。
我知道像
dd if=/dev/urandom of=/dev/$HOME
Run Code Online (Sandbox Code Playgroud)
应该足以进行数据销毁。但是,我不知道如何通过某个密码触发它。
如果在删除数据时允许登录,则奖励积分。