我遇到的情况不是很常见,或者对某人来说很常见。我需要在数据库中存储一些密码。 让我解释一下我真正需要的是什么。
我有一些服务器,我每天需要访问3次,每天,全年,是一种不间断的服务,每个服务器都运行SSH服务,而且我有我的每天 3 次请求访问每个服务器的软件。 好吧,一切都如我所愿,问题是,密码!如何管理所有密码!
今天,我在脚本中拥有所有服务器密码(与实际运行 SSH 服务的脚本相同),因为我正在使用 SSH2 PHP 函数 ssh2_auth_password() 对服务器进行身份验证,但它是纯文本。
这个函数 ssh2_auth_pubkey_file() 怎么样?我应该如何使用它?
将密码存储在我自己的脚本中安全吗?我不这么认为..
那这种情况怎么办呢?如果我将密码存储在数据库中,我将需要在每次服务器请求时检索密码(它由 cron 运行),然后如果它是一个散列,我可以与脚本中的另一个散列进行比较并为我的脚本返回一个纯文本功能验证,仍然是纯文本..(但我认为这还不是一个好的解决方案!)。
加密密码然后解密每个服务器请求的密码?也许有可能..
有人知道在这种情况下最好做什么吗?
我在游泳池里!
提前感谢您提供任何光线!
[编辑]
我的 Arch 大部分是 Kernel Linux 2.6, 在外部(中立服务器)上运行的 SaaS 应用程序和 CronJobs 每天定期运行 3 次,一切都是通过命令行自动完成的,无需人工干预。
[再次编辑]
我应该在哪里生成 key 对?对于我的所有服务器(包括 SaaS APP 服务器)来说,只有一个 key 对就足够了吗?还是我需要一个一个生成? 有点迷茫..
CRON JOBS (fire servers) 3x/day
------------
| SaaS APP |________________________
________------------_______ |
| | | |
| | | |
----------- ----------- ----------- |
| SERVER1 | | SERVER2 | | SERVER3 | .... SERVER4 ....
----------- ----------- -----------
再次感谢!
最佳答案
如果您正在通过 ssh 进行服务器内部通信,那么一定要使用公钥。如果您只是简单地使用基于密码的身份验证,那么如果目标服务器遭到破坏或 SSL 调谐器被破解,则可以窃取密码。问题是,你每次都必须给出密码(好吧,你可以使用无密码的公钥,但最好不要)。为了克服这个困难,您可以使用公钥和存储您的身份验证密码的 ssh 代理,这样您每次重新启动时只需输入一次这些密码。
关于php - 加密或散列密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8592711/
这道题是thisquestion的逆题.给定一个散列,每个键都有一个数组,例如{[:a,:b,:c]=>1,[:a,:b,:d]=>2,[:a,:e]=>3,[:f]=>4,}将其转换为嵌套哈希的最佳方法是什么{:a=>{:b=>{:c=>1,:d=>2},:e=>3,},:f=>4,} 最佳答案 这是一个迭代的解决方案,递归的解决方案留给读者作为练习:defconvert(h={})ret={}h.eachdo|k,v|node=retk[0..-2].each{|x|node[x]||={};node=node[x]}node[
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
我有这样的哈希trial_hash={"key1"=>1000,"key2"=>34,"key3"=>500,"key4"=>500,"key5"=>500,"key6"=>500}我按值降序排列:my_hash=trial_hash.sort_by{|k,v|v}.reverse我现在是这样理解的:[["key1",1000],["key4",500],["key5",500],["key6",500],["key3",500],["key2",34]]但我希望当值相同时按键的升序排序。我该怎么做?例如:上面的散列将以这种方式排序:[["key1",1000],["key3",500
我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。
我在加密来self正在使用的第三方供应商的值时遇到问题。他们的指令如下:1)Converttheencryptionpasswordtoabytearray.2)Convertthevaluetobeencryptedtoabytearray.3)Theentirelengthofthearrayisinsertedasthefirstfourbytesontothefrontofthefirstblockoftheresultantbytearraybeforeencryption.4)EncryptthevalueusingAESwith:1.256-bitkeysize,2.25
我需要根据字符串路径的长度将字符串路径数组转换为符号、哈希和数组的数组给定以下数组:array=["info","services","about/company","about/history/part1","about/history/part2"]我想生成以下输出,对不同级别进行分组,根据级别的结构混合使用符号和对象。产生以下输出:[:info,:services,about:[:company,history:[:part1,:part2]]]#altsyntax[:info,:services,{:about=>[:company,{:history=>[:part1,:pa
假设我有一个类A,里面有一些方法。假设stringmethodName是这些方法之一,我已经知道我想给它什么参数。它们在散列中{'param1'=>value1,'param2'=>value2}所以我有:params={'param1'=>value1,'param2'=>value2}a=A.new()a.send(methodName,value1,value2)#callmethodnamewithbothparams我希望能够通过传递我的哈希以某种方式调用该方法。这可能吗? 最佳答案 确保methodName是一个符号,而
有没有办法在Rails中为确认字段自定义消息?例如在设计中我必须输入密码和password_confirmation并且错误消息是:Passwordconfirmationdoesn'tmatchPassword我可以更改事件记录语言环境消息(“不匹配”),但它会在该语言环境消息的开头和结尾输出密码确认和密码,所以我得到如下内容:"PasswordconfirmationmustmatchPassword"有没有办法将其更改为不同的字符串?PasswordconfirmationandPasswordmustmatch.编辑另一件事是拥有完全自定义的消息,例如:'Setpassword
从一个返回表中所有值的模型中,我如何将其转换为名称值对的散列{column_value=>column_value}例如[{:id=>1,:name=>'first'},{:id=>2,:name=>'second'},{:id=>3,:name=>'third'}]到(指定:id和:name){'first'=>1,'second'=>2,'third'=>3} 最佳答案 你可以用inject在一行中完成:a=[{:id=>1,:name=>'first'},{:id=>2,:name=>'second'},{:id=>3,:na
这个问题困扰了我一段时间。这不是一件困难的事情,但我不知道为什么没有简单的方法来做到这一点,我敢打赌有但我没有看到。我只想取一个散列,像这样:cars={:bob=>'Pontiac',:fred=>'Chrysler',:lisa=>'Cadillac',:mary=>'Jaguar'}然后做类似的事情cars[:bob,:lisa]得到{:bob=>'Pontiac',:lisa=>'Cadillac'}我这样做了,效果很好:classHashdefpick(*keys)Hash[select{|k,v|keys.include?(k)}]endendruby-1.8.7-p249