我想做以下事情:
我坚持#2.我可以通过Digital Ocean API成功创建水滴,我可以在该authorized_keys区域设置SSH密钥,但如果我允许Digital Ocean创建密钥,那么我无法验证服务器的公钥.
现在通常情况下,如果这是在同一个数据中心内,它就不会引起关注,因为我可以依赖Digital Ocean而不是实施MITM攻击,因为他们无论如何都有root,但是因为我从我的开发机器连接,我需要一个信任公钥的方式.
我尝试过遵循各种cloud-init指南,但我总是得到错误:
ssh root@178.62.69.133
Connection closed by 178.62.69.133
Run Code Online (Sandbox Code Playgroud)
我试图消除任何错误的可能性,我甚至使用base64编码私钥,认为可能存在一些转义问题.
这是我用来创建密钥的命令:
e = "ssh-keygen -t ecdsa-sha2-nistp256 -f #{loc} -q -N #{password} -C \"\""
system(e)
Run Code Online (Sandbox Code Playgroud)
其中扩展到:
ssh-keygen -t ecdsa-sha2-nistp256 -f /tmp/testing-60f42fcf -q -N 77924d8f4fa12a365c8c003ca091f5ad6a2c4c22 -C ""
Run Code Online (Sandbox Code Playgroud)
我然后base64编码,
private_key = `base64 --wrap=0 #{loc}`.chomp
public_key = `base64 --wrap=0 #{loc}.pub`.chomp
Run Code Online (Sandbox Code Playgroud)
并将其放入cloud-init yaml文件中(不想使用,|因为它是Yaml中的一个特殊字符,如果可能的话我想避免它):
#cloud-config
---
runcmd:
- echo test > /root/test
- rm /etc/ssh/ssh_host*
- echo LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tClByb2MtVHlwZTogNCxFTkNSWVBURUQKREVLLUluZm86IEFFUy0xMjgtQ0JDLEY3MDNDNzM1QTAxQzgyNEVBRjhCODA4NkVDREIyMjAwCgpiYlpCa3A2Ujcyd1RRNUsyL2w4QW9YU3FQNllRVjV0aVJETytmU1FqZTlEUjY4MG9wY3RCRGhKRWdPQ0prSkw1CmhOUGxydzUveHFwTHM5UXc3cWJaWlUvRHR0YnlxZTFWUDcyVHBRS1pFL2FDcTdGTWFpbFJrcUpFa3JobVdCcFEKbWtQTW15M3BwVFZZKzJvRDZTdmMzdzZyTW1JTlpKUkltRUxiUk81S2M4bz0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=
> /tmp/base64_pri && base64 --decode /tmp/base64_pri …Run Code Online (Sandbox Code Playgroud) 而不是抓住PubChem的网站,我宁愿做得好,并从PubChem ftp网站本地生成图像:
ftp://ftp.ncbi.nih.gov/pubchem/specifications/
唯一的问题是我仅限于OSX和Linux,我似乎无法找到一种以编程方式生成他们在网站上拥有的2D图像的方法.看这个例子:
https://pubchem.ncbi.nlm.nih.gov/compound/6#section=Top
在"2D结构"标题下,我们在这里有这样的图像:
https://pubchem.ncbi.nlm.nih.gov/image/imgsrv.fcgi?cid=6&t=l
这就是我想要产生的东西.
以前schema.rb是一个很好的地方,可以快速查看列默认值是什么以及它们是否可以为空,但现在它很麻烦.例如,这是一个用户表:
create_table "users", force: :cascade do |t|
t.string "name", null: false
t.string "email", null: false
t.string "locale", default: "en-ca", null: false
t.string "password_digest", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["email"], name: "index_users_on_email", unique: true, using: :btree
end
Run Code Online (Sandbox Code Playgroud)
现在它看起来像这样可怕:
create_table "users", id: :serial, force: :cascade do |t|
t.string "name", null: false
t.string "email", null: false
t.string "locale", default: "en-ca", null: false
t.string "password_digest", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["email"], name: …Run Code Online (Sandbox Code Playgroud)