วิธีการสร้างผู้ใช้อย่างรวดเร็ว


2

นี่เป็นเพียงความคิดที่ไม่ดีที่ฉันเพิ่งมี

มีวิธีสร้างบัญชีผู้ใช้ทันทีหรือไม่

บอกว่าฉันสร้าง Ubuntu vm แล้วและฉันต้องการให้ผู้คนมากมายเข้าถึง แต่ด้วยเหตุผลใดก็ตามฉันไม่สนใจเป็นพิเศษเกี่ยวกับสิ่งที่พวกเขาทำ

ฉันจะตั้งค่าได้อย่างไรเมื่อผู้ใช้ A ssh เข้า vm บัญชีผู้ใช้จะถูกสร้างขึ้นโดยอัตโนมัติ

และใช่ฉันรู้ในทางทฤษฎีแล้วฉันสามารถสร้างบัญชีผู้เยี่ยมชมและแบ่งปันสิ่งนั้นกับผู้คนที่ต้องการเข้าถึง แต่ผู้คนจำนวนมากจะแชร์บัญชีและฉันต้องการบันทึกสิ่งที่ทุกคนทำเพื่อให้พวกเขาใช้บัญชีเดียวกันจะทำให้ยากมาก

และใช่นี่เป็นความคิดที่แย่มาก


1
user A ssh into the vm the user's account will automatically be created.... หากไม่ได้สร้างบัญชีไว้ล่วงหน้าผู้ใช้จะไม่สามารถssh(เข้าสู่ระบบ) .. คุณต้องสร้างบัญชีที่มีศักยภาพก่อนที่พวกเขาจะสามารถเข้าสู่ระบบและใช้ ..
heemayl

ฉันไม่สามารถแก้ไข ssh เพื่อตัดสคริปต์ที่สร้างบัญชีผู้ใช้จากนั้นผู้ใช้สามารถ ssh ครั้งที่สองและครั้งนี้มันจะทำงานได้หรือไม่
D.Zou

ฉันขอแนะนำให้คุณเพียงแค่สร้างรายชื่อผู้ใช้และสร้างบัญชีผู้ใช้จากรายการ ให้ฉันแค่หาคำตอบที่ฉันโพสต์เมื่อไม่นานมานี้ในหัวข้อนี้
Sergiy Kolodyazhnyy

ที่นี่คุณไป: askubuntu.com/q/633695/295286
Sergiy Kolodyazhnyy

คำตอบ:


0

ฉันชอบความท้าทาย ใช่คุณสามารถทำเช่นนี้ถ้าคุณยินดีที่จะให้ ssh แรกล้มเหลว สคริปต์ต่อไปนี้ (ซึ่งฉันทดสอบจริง) ทำตามบันทึก sshd ซึ่งตามค่าเริ่มต้น (ในระบบของฉัน) จะสร้างบรรทัดเช่นนี้ในการเข้าสู่ระบบ ssh ที่ล้มเหลว:

Jun 20 21:06:35 home sshd[18163]: Invalid user dummy from ::1

เมื่อมีการจับคู่บรรทัดดังกล่าว ID ผู้ใช้ (ดัมมี่ในตัวอย่างนี้) จะถูกแยกและบัญชีผู้ใช้จะถูกสร้างขึ้นด้วยรหัสผ่านที่เข้ารหัสซึ่งเหมือนกับรหัสผู้ใช้ (ดัมมี่) การพยายามลงชื่อเข้าใช้ครั้งที่สองจะใช้งานได้

# encrypt a cleartext password given as arg
cryptpw(){
        perl -e '
        my $pw = "'"$1"'";
        my $salt = join("",("a".."z")[rand 26,rand 26]);
        printf "%s\n", crypt($pw,$salt);'
}

sudo journalctl --no-pager -lfu sshd | 
while read line
do    if [[ "$line" =~ "Invalid user "([^ ]*) ]]
      then  newuser=${BASH_REMATCH[1]}
            pw=$(cryptpw "$newuser")
            sudo useradd "$newuser" -p "$pw"
      fi
done

ผู้ใช้อาจต้องการคัดลอกคีย์ไปยังรีโมท:

ssh-copy-id dummy@host

หากยังไม่มีรหัสให้ทำก่อน:

ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ''

0

การใช้python:

#!/usr/bin/env python2
import re, crypt, subprocess

with open('/var/log/auth.log') as logfile, open('/etc/passwd') as passfile:
    given_usernames = []
    for line in logfile:
        name = re.search(r'(?<= Invalid user ).*?(?= from)', line)
        if name:
            given_usernames.append(name.group())

    current_usernames = []
    for line in passfile:
         current_usernames.append(re.search(r'^[^:]+', line).group())

    for i in given_usernames:
        if i not in current_usernames:
            password = crypt.crypt(i + str(123), 'foobar12')
            subprocess.call('sudo useradd -m -p {0} {1}'.format(password, i).split())
  • เมื่อผู้ใช้พยายามเข้าสู่ระบบคอมพิวเตอร์ผ่านทางsshผู้ที่ไม่มีบัญชีที่มีอยู่จะถูกปฏิเสธการเข้าสู่ระบบและเหตุการณ์นี้จะถูกบันทึกไว้ใน/var/log/auth.logไฟล์ที่มีบรรทัดเช่น:

    Jun 21 01:11:03 my_hostname sshd[17763]: Invalid user foobar from 192.168.4.2
    
  • เราจะใช้ประโยชน์จากบรรทัดนี้เพื่อแยกชื่อผู้ใช้ที่มีให้เพื่อสร้างบัญชีสำหรับผู้ใช้นั้นเพื่อให้ครั้งต่อไปที่ผู้ใช้สามารถเข้าสู่ระบบได้โดยไม่มีปัญหาใด ๆ

  • เราได้ใช้รหัสผ่านชื่อผู้ใช้ที่ได้รับบวก123(เกลือเป็นfoobar12) เช่นถ้าชื่อผู้ใช้เป็นรหัสผ่านจะเป็นspamegg spamegg123คุณสามารถเปลี่ยนมันและเกลือเป็นค่าใด ๆ ที่คุณต้องการและแน่นอนว่าผู้ใช้จะต้องเปลี่ยนรหัสผ่านหลังจากเข้าสู่ระบบเป็นครั้งแรก

  • ด้วยวิธีนี้ชื่อผู้ใช้ทั้งหมดจาก/var/log/auth.logไฟล์จะถูกนำเข้าไปในรายการและในทำนองเดียวกันชื่อผู้ใช้ทั้งหมด/etc/passwdก็จะถูกนำไปอยู่ในรายการด้วย

  • จากนั้นเราได้ตรวจสอบว่าชื่อผู้ใช้ที่ป้อนนั้นมีอยู่แล้วหากไม่ใช่จะมีการสร้างผู้ใช้ด้วยรหัสผ่านที่กล่าวถึงก่อนหน้านี้

  • คุณสามารถเรียกใช้เป็นcronงานเพื่อให้แน่ใจว่าชื่อผู้ใช้จะถูกเพิ่มโดยอัตโนมัติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.