ไม่ต้องเก็บรหัสผ่าน FTP ใน Vagrantfile (กลยุทธ์ Vagrant push FTP)

ฉันกำลังพัฒนาไซต์ขนาดเล็ก ฉันใช้คนจรจัดสำหรับสภาพแวดล้อมการพัฒนาและต้องการใช้เพื่อปรับใช้กับการใช้งานจริง เอกสาร Vagrant บอกว่ามีกลยุทธ์ FTP แบบพุชของ Vagrant

กำหนดค่า:

config.push.define "ftp" do |push|
  push.host = "ftp.company.com"
  push.username = "username"
  push.password = "password"
end

การใช้งาน:

vagrant push

มันค่อนข้างเพียงพอสำหรับฉัน แต่สิ่งที่หยุดฉันคือการจัดเก็บโฮสต์ ftp ชื่อผู้ใช้และรหัสผ่านใน Vagrantfile ที่ไปที่ระบบควบคุมเวอร์ชันของฉันและถือเป็นแนวทางปฏิบัติที่ไม่ดี

คุณสามารถให้วิธีแก้ปัญหาสำหรับกรณีนี้ได้หรือไม่?


person user3192683    schedule 01.02.2017    source แหล่งที่มา


คำตอบ (3)


สร้างรหัสผ่านแฮชและเก็บไว้

openssl passwd -1 "Your_password"
person Avinash    schedule 01.02.2017

ฉันพบวิธีแก้ปัญหาโดยใช้ไฟล์ปรับแต่ง ด้วยแรงบันดาลใจจากคำถามนี้ ฉันจึงย้ายข้อมูลที่ละเอียดอ่อนไปยังไฟล์แยก ฉันเรียกมันว่า ftp.yml และเพิ่มเป็น .gitignore

ftp.yml

ftp_host: "host"
ftp_user: "username"
ftp_pass: "password"

.gitignore

ftp.yml

Vagrantfile

# loading FTP config
require 'yaml'
settings = YAML.load_file 'ftp.yml'

Vagrant.configure("2") do |config|

# vm config omitted

    config.push.define "ftp" do |push|
      push.host = settings['ftp_host']
      push.username = settings['ftp_user']
      push.password = settings['ftp_pass']
    end
end

มันทำงานได้ดีสำหรับฉัน

person user3192683    schedule 01.02.2017

วิธีแก้ปัญหาง่ายๆ คือการใช้ตัวแปรสภาพแวดล้อม มีประโยชน์ที่สำคัญที่จะไม่เก็บรหัสผ่านในรูปแบบข้อความที่ชัดเจน

ไฟล์คนเร่ร่อน:

config.push.define "ftp" do |push|
  push.host = "ftp.company.com"
  push.username = "username"
  push.password = ENV["FTP_PASSWORD"]
end

และส่งออกรหัสผ่านในตัวแปรสภาพแวดล้อมก่อนการโทรไปยังคนจรจัด:

export FTP_PASSWORD='super_secret'
vagrant push

โดยส่วนตัวแล้ว ฉันใช้เครื่องมือบรรทัดคำสั่ง 1Password เพื่อดึงรหัสผ่านจากตู้นิรภัยของฉัน:

export FTP_PASSWORD=$(op get item ftp.company.com | jq '.details.fields[] | \
                        select(.designation=="password").value' -r)
vagrant push
person Jean-Pierre Matsumoto    schedule 12.03.2020