นักเทียบท่าไม่ได้รับอนุญาต: จำเป็นต้องมีการตรวจสอบความถูกต้อง - เมื่อกดเข้าสู่ระบบสำเร็จ


103

ในขณะที่พุชอิมเมจนักเทียบท่า (หลังจากล็อกอินสำเร็จ) จากโฮสต์ของฉันฉันได้รับ "ไม่ได้รับอนุญาต: ต้องมีการตรวจสอบสิทธิ์"

รายละเอียดด้านล่าง.

-bash-4.2# docker login --username=asamba --email=anand.sambamoorthy@gmail.com
WARNING: login credentials saved in /root/.docker/config.json
*Login Succeeded*
-bash-4.2#
-bash-4.2# docker push asamba/docker-whale

Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/asamba/docker-whale] (len: 0)
faa2fa357a0e: Preparing
unauthorized: authentication required
  • เวอร์ชัน Docker: 1.9.1 (ทั้งไคลเอนต์และเซิร์ฟเวอร์)
  • http://hub.docker.comมี repo ที่สร้างขึ้นเช่นกัน (asamba / docker-whale)

/ var / log / messages แสดง 403 ฉันไม่รู้ว่านักเทียบท่านี้ ดูด้านล่าง

Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884872524Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884988574Z" level=error msg="Handler for POST /v1.21/images/asamba/docker-whale/push returned error: Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.885013241Z" level=error msg="HTTP Error" err="Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced" statusCode=403
Apr 16 11:39:05 localhost journal: time="2016-04-16T11:39:05.420188969Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Mounting V4 Filesystem
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Ending clean mount
Apr 16 11:39:07 localhost kernel: XFS (dm-4): Unmounting Filesystem

ขอความช่วยเหลือใด ๆ โปรดแจ้งให้เราทราบหากคุณต้องการข้อมูลเพิ่มเติม ฉันผลักดันด้วย -f เช่นกัน ไม่มีโชค!


1
มันจะเป็นประโยชน์สำหรับผู้ดูแลระบบไซต์และคนอื่น ๆ ที่กำลังมองหาข้อมูลเกี่ยวกับปัญหาเดียวกันหากคุณคลิกเครื่องหมายถูกข้างคำตอบของคุณเพื่อทำเครื่องหมายเป็น "คำตอบ" :-) คุณได้รับอนุญาต (แม้ได้รับการสนับสนุน) ให้ทำเช่นนั้น บน Stack Overflow
Cindy Meister

คำตอบ:


88

แก้ไข (13/08/2560)

ตามความคิดเห็นของ @ KaraPirinc ใน Docker เวอร์ชัน 17 เพื่อเข้าสู่ระบบ (ขั้นตอนที่ 1)

docker login -u username -p password

ฉันก็มีปัญหาเดียวกันนี่คือวิธีที่ฉันแก้ไข

ขั้นตอนที่ 1: เข้าสู่ระบบ Docker Hub

docker login --username=<user username> --email=<user email address>

ขั้นที่ 2: สร้างพื้นที่เก็บข้อมูลในส่วนศูนย์กลางนักเทียบท่า สมมติว่า " mysqlserver: sql "

docker push <user username>/mysqlserver:sql

7
นี้ควรจะเป็นคำตอบที่ถูกต้อง docker loginยังใช้งานได้โดยไม่ต้องใช้ params
blnc

5
ทำงานได้อย่างสมบูรณ์ อย่างไรก็ตาม--email ได้เลิก
IgorGanapolsky

(docker version 17): docker login -u username -p password
Yusuf Ismail Oktay

ขอบคุณสำหรับการอัพเดท. ฉันจะอัปเดตคำตอบตามความคิดเห็นของคุณ
GPrathap

34

วิธีแก้ปัญหาที่คุณโพสต์ไม่ได้ผลสำหรับฉัน ...

นี่คือสิ่งที่เหมาะกับฉัน:

  1. สร้างที่เก็บด้วยชื่อที่ต้องการ

  2. <dockerusername>/desired-nameเมื่อผู้ต้องหาภาพชื่อภาพเช่นพื้นที่เก็บข้อมูลรวมถึงชื่อผู้ใช้ ตัวอย่างเช่นradu/desired-name.


# นักเทียบท่า ps -a รับชื่อ conainer --nostalgic_morse ที่นี่ # นักเทียบท่ากระทำ -m "ทดสอบ" -a "alex" คิดถึงวิทยา _morse alexcpn / grpc # นักเทียบท่า push alexcpn / grpc
Alex Punnen

28

ตกลง! ไม่เป็นไร; ฉันพบทางออกแล้ว ด้วย 403 สงสัยว่า HTTP จะไม่ไปที่ URL ที่ถูกต้อง

เปลี่ยนไฟล์ที่มีข้อมูลรับรองการเข้าสู่ระบบที่เก็บไว้~/.docker/config.jsonจากค่าเริ่มต้นที่สร้างขึ้น

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

ถึง - สังเกตการเปลี่ยนแปลงจาก docker.io -> index.docker.io/v1 นั่นคือการเปลี่ยนแปลง

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

หวังว่าจะช่วยได้

โปรดทราบว่าฟิลด์การตรวจสอบความถูกต้องควรเป็น 'username: password” ที่เข้ารหัส base64 ตัวอย่างเช่น: การเข้ารหัส "username: password" base64 คือ "dXNlcm5hbWU6cGFzc3dvcmQ ="

ดังนั้นไฟล์ของคุณจะมี:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

คุณช่วยฉันได้พอสมควร! ทางออกที่สมบูรณ์แบบสำหรับฉันเช่นกัน
Marco Lenzo

7
ทำงานให้ฉันเช่นกัน นี่คือสิ่งเดียวกันจากบรรทัดคำสั่ง:sudo docker login -e me@example.com -u someuser -p somepass https://index.docker.io/v1/
บรรเจิด

2
ขอบคุณ @Banjer พารามิเตอร์ -e เลิกใช้งานแล้วและไม่ควรใช้ sudo สำหรับคนส่วนใหญ่ที่ตั้งค่าระบบอย่างถูกต้อง ทางออกที่ดีกว่าคือ: docker login -u someuser https://index.docker.io/v1/สิ่งนี้จะถามรหัสผ่านเพื่อป้องกันไม่ให้ลงท้ายด้วยประวัติคำสั่ง
erb


7

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

เมื่อฉันลงชื่อเข้าใช้อินสแตนซ์เองก็ทำdocker loginและdocker pushทุกอย่างทำงานได้ดี


ขอบคุณการเข้าสู่ระบบนักเทียบท่าจะสร้างไฟล์กำหนดค่าโดยอัตโนมัติตามที่อธิบายไว้ที่ลิงค์
เฟลิกซ์

7

ฉันมีปัญหาเดียวกัน แต่ฉันแก้ไขด้วยการผลักดันพร้อม URL ที่ระบุ เป็น: นักเทียบท่าเข้าสู่ระบบ -u https://index.docker.io/v1/

เอาต์พุตคอนโซล:

The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Preparing 
4db5654f7a64: Preparing 
ce71ae73bc60: Preparing 
e8e980243ee4: Preparing 
d773e991f7d2: Preparing 
bae23f4bbe95: Waiting 
5f70bf18a086: Waiting 
3d3e4e34386e: Waiting 
e72d5d9d5d30: Waiting 
8d1d75696199: Waiting 
bdf5b19f60a4: Waiting 
c8bd8922fbb7: Waiting 
unauthorized: authentication required

1010deiMac:dockerspace whoami$ docker login -u <username> https://index.docker.io/v1/
Password: 
Login Succeeded
1010deiMac:dockerspace whoami$ docker push <username>/richcity 
The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Pushed 
4db5654f7a64: Pushed 
ce71ae73bc60: Pushed 
e8e980243ee4: Pushed 
d773e991f7d2: Pushed 
bae23f4bbe95: Pushed 
5f70bf18a086: Pushed 
3d3e4e34386e: Pushing [=============>                                     ] 45.07 MB/165.4 MB
e72d5d9d5d30: Pushed 
8d1d75696199: Pushing [>                                                  ] 1.641 MB/118.1 MB
bdf5b19f60a4: Pushing [============>                                      ]   142 MB/568.4 MB
c8bd8922fbb7: Pushing [========================>                          ] 59.44 MB/121.8 MB

5

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

ดังนั้น:

docker login -u xxx -p yyy sampledockerregistry.com/myapp 
docker push sampledockerregistry.com/myapp

ผลงาน

ในขณะที่

docker login sampledockerregistry.com 
username : xxx
password : yyy
Login Succeeded

docker push sampledockerregistry.com/myapp

ล้มเหลว


4

แม้แต่ล็อกอินและตรวจสอบการกำหนดค่าทั้งหมดก็ยังใช้งานไม่ได้ !!!

ปรากฎว่าเมื่อฉันสร้างนักเทียบท่าฉันลืมใส่ชื่อผู้ใช้ของฉันไว้หน้าชื่อ repo

docker build docker-meteor-build 

(สร้างสำเร็จ)

จากนั้นเมื่อฉันดันไปที่ที่เก็บของฉันฉันก็ใช้

docker push myname/docker-meteor-build 

มันจะแสดงไฟล์ unauthorized authentication required

ดังนั้นโซลูชันจึงเป็นชื่อของบิวด์และการพุชควรจะเหมือนกัน

docker build myname/docker-meteor-build 
docker push myname/docker-meteor-build 

4

ปัญหาที่มือใหม่ต้องเผชิญคือเรามักจะใช้ที่เก็บ Docker hub เหมือนกับที่เก็บ maven และคิดว่ามันอาจมีไฟล์โฟลเดอร์และเนื้อหาอื่น ๆ มากมาย

ในทางกลับกันที่เก็บนักเทียบท่าเป็นเพียงภาพเดียว แต่ไม่มีสิ่งอื่นใด สามารถเก็บรูปภาพเดียวกันได้หลายเวอร์ชัน แต่จะมีเพียงรูปภาพเดียว

ดังนั้นตั้งชื่อที่เก็บของคุณบน docker hub ด้วยชื่อเดียวกับรูปภาพที่คุณต้องการพุชเข้าไปและใช้ชื่อผู้ใช้ dockerhub ของคุณเป็นคำนำหน้า ตัวอย่างเช่นหากชื่อผู้ใช้ของคุณคือmyusernameและชื่อรูปภาพของคุณคือdocker-whaleให้ตั้งชื่อที่เก็บ dockerhub ของคุณเป็น docker -whaleและใช้คำสั่งด้านล่างเพื่อแท็กและพุชรูปภาพของคุณไปยังที่เก็บ:

docker logout                                   # to make sure you're logged out and not cause any clashes
docker tag <imageId> myusername/docker-whale    # use :1.0.0 for specific version, default is 'latest'
docker login --username=myusername              # use the username/pwd to login to docker hub
docker push myusername/docker-whale             # use :1.0.0 for pushing specific version, default is 'latest'

1
ฉันได้รับคำ "ปฏิเสธ: การร้องขอการเข้าถึงทรัพยากรถูกปฏิเสธ" จนกระทั่งฉันเห็นโพสต์นี้ ในที่สุดก็จัดการเพื่อให้ "นักเทียบท่า" ครั้งแรกของฉันทำงานได้โดยไม่ต้องมีการสอน ขอบคุณมาก!
glendon

2

หากคุณส่งรูปภาพส่วนตัวใหม่เป็นครั้งแรกตรวจสอบให้แน่ใจว่าการสมัครของคุณรองรับรูปภาพพิเศษนี้

นักเทียบท่าช่วยให้คุณตั้งชื่อภาพส่วนตัวได้ 6 ภาพแม้ว่าคุณจะจ่ายแค่ 5 แต่ก็ไม่ต้องดันภาพที่ 6 การขาดข้อความให้ข้อมูลทำให้สับสนและระคายเคือง


2

นี่คือทางออกสำหรับกรณีของฉัน (repos ส่วนตัวแผนบัญชีฟรี)

https://success.docker.com/Datacenter/Solve/Getting_%22unauthorized%3A_authentication_required%22_when_trying_to_push_image_to_DTR

ชื่อบิวด์อิมเมจที่จะพุชต้องมีชื่อเดียวกันของ repos

ตัวอย่าง: repos บน docker hub คือ: accountName / resposName ชื่อบิวด์อิมเมจ "accountName / resposName" -> docker build -t accountName / resposName

จากนั้นพิมพ์ docker push accountName / resposName: latest

นั่นคือทั้งหมด


ตอนนี้ลิงค์เสีย โปรดแก้ไข
Eric Bolinger

2

ปัญหาของฉันคือโทเค็นการอนุญาตที่ไม่ถูกต้องหลังจากผ่านไป 5 นาที การกดใช้เวลานานกว่า 5 นาทีเนื่องจากขนาดของรูปภาพ

ฉันได้แก้ไขแล้วโดยเพิ่ม "ระยะเวลาโทเค็นการอนุญาต" เป็น 10 นาที

ป้อนคำอธิบายภาพที่นี่


คุณพบการตั้งค่านี้ที่ไหน ฉันหามันไม่เจอ
Vic Seedoubleyew

2
การแฮ็คของฉันเพื่อหลีกเลี่ยงปัญหานี้คือการทำงานdocker loginในหน้าต่างเทอร์มินัลอื่นในไม่ช้าก่อนที่จะอัปโหลดเสร็จ
Vic Seedoubleyew

@VicSeedoubleyew Admin Area -> Settings -> CI/CD -> Container Registry. เส้นทาง /admin/application_settings/ci_cdurl:
Manuel Schmitzberger

ขอบคุณสำหรับคำตอบ. พื้นที่ธุรการของอะไร? ฉันไม่เห็นสิ่งนั้นใน dockerhub
Vic Seedoubleyew

นั่นคือสำหรับอินสแตนซ์ gitlab ของตัวเอง ฉันไม่แน่ใจว่าคุณสามารถกำหนดค่าบน Dockerhub ได้หรือไม่
Manuel Schmitzberger

1

สิ่งที่ได้ผลสำหรับฉันคือการสร้างที่เก็บใหม่และเปลี่ยนชื่อรูปภาพด้วย

$ docker tag image_id myname/server:latest


1

ตรวจสอบให้แน่ใจว่าคุณมีช่องสำหรับรูปภาพส่วนตัวมากขึ้น

ในกรณีของฉันฉันแปลงผู้ใช้เป็นองค์กรและสูญเสียรูปภาพส่วนตัวฟรีหนึ่งภาพดังนั้นการผลักดันก่อนหน้านี้จึงใช้งานไม่ได้อีกต่อไป


1

คุณสามารถ mv ไฟล์ xxx / .docker / config.json ได้ที่ไหนสักแห่งเพื่อจัดการมัน จากนั้นลองเข้าสู่ระบบอีกครั้งเพื่อสร้างไฟล์ config.json ใหม่

#mv xx/.docker/config.json xx/.docker/config_old.json
#docker login https://index.docker.io/v1/
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: YOUR USERNAME
Password: YOUR PASSWORD
WARNING! Your password will be stored unencrypted in /xxx/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

1

ฉันมีปัญหาที่คล้ายกัน

Error response from daemon: Get https://registry-1.docker.io/v2/hadolint/hadolint/manifests/latest: unauthorized: incorrect username or password

ฉันพบว่าแม้ว่าฉันจะเข้าสู่ระบบด้วยไฟล์ docker loginคำสั่งแต่การดึงข้อมูลใด ๆ ก็ล้มเหลว ฉันพยายามทำความสะอาด~/.docker/config.jsonแต่ก็ไม่มีอะไรดีขึ้น

ดูในไฟล์ config ฉันเห็นว่าไม่มีการบันทึกข้อมูลรับรองที่นั่น แต่อยู่ในไฟล์"credsStore": "secretservice". ใน Linux สิ่งนี้เป็นเครื่องมือseahorseหรือ Passwords and Keysฉันตรวจสอบที่นั่นและล้างข้อมูลล็อกอินฮับ Docker ทั้งหมด หลังจากนี้การเข้าสู่ระบบนักเทียบท่าใหม่ก็ทำงานได้ตามที่คาดไว้


คุณรันคำสั่งใดเพื่อล้างข้อมูลล็อกอินฮับ Docker ทั้งหมดจากผู้จัดการรหัสผ่าน
CBBSpike

@CBBSpike ฉันเพิ่งเปิดตัวจัดการรหัสผ่านและลบข้อมูลประจำตัวนักเทียบท่าจากที่นั่น
Alex

0

ตรวจสอบให้แน่ใจว่าชื่อที่เก็บนักเทียบท่าของคุณตรงกับชื่อที่เก็บนักเทียบท่าในเครื่องของคุณ เช่นสมมติว่าคุณชื่อ repo ท้องถิ่น "kavashgar / nodjsapp"

คุณควรมีชื่อ repo "kavashgar" ใน docker hub ด้วย


0

ในไฟล์คอนฟิกูเรชันของคุณ ~ / .docker / config.json เพิ่ม

{
        "auths": {
             "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "my_email@gmail.com"
                }
        }
}

โดยที่ XXXXX เป็นการเข้ารหัส base64 ของชื่อผู้ใช้ของคุณ: รหัสผ่าน (the: is included) ของhttps://hub.docker.com

ในกรณีของฉันฉันมีข้อผิดพลาดเดียวกันกับการดึง ปัญหา (ภายใต้ windows) ถูกกระตุ้นโดยกระบวนการทำงานของนักเทียบท่าคู่ดังนั้นให้ฆ่าพวกเขาทั้งหมดและเริ่มบริการใหม่หนึ่งครั้งและใช้งานได้


0

มีคำตอบที่ดีอยู่แล้ว แต่ฉันอยากจะพูดถึง - คุณไม่จำเป็นต้องสร้างที่เก็บล่วงหน้าก่อนที่จะกด

ปัญหาสำหรับฉันคือฉันไม่ได้ตั้งชื่อผู้ใช้ที่ถูกต้องของบัญชีที่ฉันเข้าสู่ระบบ แต่เมื่อตั้งชื่อผู้ใช้ที่ถูกต้องก่อนรูปภาพ (เช่นYOURNAME/YOURIMAGE) ผ่านแท็กคุณสามารถพุชได้โดยไม่ต้องสร้างที่เก็บใหม่ล่วงหน้า

sudo docker tag IMAGE:VERSION USERNAME/IMAGE:VERSION
sudo docker push USERNAME/IMAGE:VERSION

0

ปัญหาเดียวกันที่นี่ระหว่างการพุชรูปภาพ:

unauthorized: authentication required

ฉันทำอะไรไป:

docker login --username=yourhubusername --email=youremail@company.com

ซึ่งพิมพ์:

- อีเมลเลิกใช้งานแล้ว (แต่ยังสามารถเข้าสู่ระบบได้สำเร็จ)

วิธีแก้ไข: ใช้ไวยากรณ์การเข้าสู่ระบบล่าสุด

docker login

มันจะถามทั้งชื่อผู้ใช้และรหัสผ่านแบบโต้ตอบ จากนั้นภาพก็ใช้งานได้

แม้ว่าหลังจากใช้ไวยากรณ์ใหม่แล้วฉัน~/.docker/config.jsonจะมีลักษณะเช่นนี้หลังจากล็อกอิน:

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "credsStore": "osxkeychain"
}

ดังนั้นข้อมูลรับรองจึงอยู่ในพวงกุญแจของ macOS


0

ฉันได้รับข้อผิดพลาดที่คล้ายกันสำหรับ sudo docker push / sudo docker pull บนที่เก็บ ecr เนื่องจาก aws cli ติดตั้งในผู้ใช้ของฉัน (abc) และนักเทียบท่าที่ติดตั้งในผู้ใช้รูทฉันได้พยายามเรียกใช้ sudo docker push กับผู้ใช้ของฉัน (abc)

แก้ไขสิ่งนี้โดยติดตั้ง aws cli ในรูทกำหนดค่า aws โดยใช้ aws กำหนดค่าในรูทและรัน sudo docker push to ecr บนผู้ใช้รูท



0

ถ้าคุณวิ่ง windows 7 docker Registry

  1. เริ่ม **Docker Quick Start terminal**รัน (เทอร์มินัลนี้เปิดใช้งานการเชื่อมต่อ) จนกว่าคุณจะพุชรูปภาพนั่นจะทำให้โทเค็นมีชีวิตอยู่
  2. เข้าสู่ระบบ docker login
  3. ตรวจสอบให้แน่ใจว่าคุณแท็กรูปภาพด้วยชื่อผู้ใช้

    docker build -f Dockerfile -t 'username'/imagename

  4. ผลักดันรูปภาพ

    docker image push username/imagename

บันทึก : ชื่อรูปภาพตัวพิมพ์เล็กทั้งหมด


0

ฉันลองทุกวิธีที่หาได้ทางออนไลน์แล้วล้มเหลว จากนั้นฉันก็อ่านโพสต์นี้และได้รับแนวคิดจากคำตอบของ @Alex จากนั้นฉันค้นหาเกี่ยวกับ "" credsStore ":" osxkeychain "" ซึ่งใช้ใน config.json ของฉัน ฉันไปที่ลิงค์นี้https://docs.docker.com/engine/reference/commandline/login/เพื่อออกจากระบบแล้วเข้าสู่ระบบอีกครั้ง ในที่สุดฉันก็สามารถผลักดันภาพลักษณ์ของฉันได้สำเร็จ

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